The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"socat, как оно это делает?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"socat, как оно это делает?"  +/
Сообщение от cods (?), 18-Авг-21, 14:13 
мне в программе нужно завернуть stdin/stdout в дескриптор чтобы через него можно было полноценно делать read/write, подскажите какой алгоритм действий?
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от бородач (?), 19-Авг-21, 16:56   +/
> мне в программе нужно завернуть stdin/stdout в дескриптор чтобы через него можно
> было полноценно делать read/write, подскажите какой алгоритм действий?

мб через unix socket + thread на обработку данных?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5

2. Сообщение от ACCA (ok), 19-Авг-21, 18:37   +/
> мне в программе нужно завернуть stdin/stdout в дескриптор чтобы через него можно
> было полноценно делать read/write, подскажите какой алгоритм действий?

socat так не делает.
Если ты имеешь в виду "bidirectional pipe", то Linux так не делает. man 7 pipe. Можно в BSD.

Вообще толком объясни, что ты хочешь. Походу, ни разу не дескриптор (чего?).

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #3

3. Сообщение от cods (?), 20-Авг-21, 17:54   +/
>> мне в программе нужно завернуть stdin/stdout в дескриптор чтобы через него можно
>> было полноценно делать read/write, подскажите какой алгоритм действий?
> socat так не делает.
> Если ты имеешь в виду "bidirectional pipe", то Linux так не делает.
> man 7 pipe. Можно в BSD.
> Вообще толком объясни, что ты хочешь. Походу, ни разу не дескриптор (чего?).

завернуть stdio/stdout в один дескриптор rw как?


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #4

4. Сообщение от муу (?), 20-Авг-21, 20:11   +/
>>> мне в программе нужно завернуть stdin/stdout в дескриптор чтобы через него можно
>>> было полноценно делать read/write, подскажите какой алгоритм действий?
>> socat так не делает.
>> Если ты имеешь в виду "bidirectional pipe", то Linux так не делает.
>> man 7 pipe. Можно в BSD.
>> Вообще толком объясни, что ты хочешь. Походу, ни разу не дескриптор (чего?).
> завернуть stdio/stdout в один дескриптор rw как?

https://man7.org/linux/man-pages/man3/stdout.3.html

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #6

5. Сообщение от . (?), 21-Авг-21, 01:11   +/
>> мне в программе нужно завернуть stdin/stdout в дескриптор чтобы через него можно
>> было полноценно делать read/write, подскажите какой алгоритм действий?
> мб через unix socket + thread на обработку данных?

или, может, mkfifo

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

6. Сообщение от cods (?), 21-Авг-21, 01:57   +/
>>>> мне в программе нужно завернуть stdin/stdout в дескриптор чтобы через него можно
>>>> было полноценно делать read/write, подскажите какой алгоритм действий?
>>> socat так не делает.
>>> Если ты имеешь в виду "bidirectional pipe", то Linux так не делает.
>>> man 7 pipe. Можно в BSD.
>>> Вообще толком объясни, что ты хочешь. Походу, ни разу не дескриптор (чего?).
>> завернуть stdio/stdout в один дескриптор rw как?
> https://man7.org/linux/man-pages/man3/stdout.3.html

мне нужно !два! десткриптора stdin и stdout завернуть в один дескриптор, где там в вашем мане это?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #7, #8, #10

7. Сообщение от AnonymPatient (?), 21-Авг-21, 09:33   +/
...

> мне нужно !два! десткриптора stdin и stdout завернуть в один дескриптор, ...

или в ядро ОС, лезть или прослойку(слой абстракции) в прилжении писать на механизмом опроса(select, kqueue, etc.)


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

8. Сообщение от . (?), 21-Авг-21, 11:01   +/
>>>>> мне в программе нужно завернуть stdin/stdout в дескриптор чтобы через него можно
>>>>> было полноценно делать read/write, подскажите какой алгоритм действий?
>>>> socat так не делает.
>>>> Если ты имеешь в виду "bidirectional pipe", то Linux так не делает.
>>>> man 7 pipe. Можно в BSD.
>>>> Вообще толком объясни, что ты хочешь. Походу, ни разу не дескриптор (чего?).
>>> завернуть stdio/stdout в один дескриптор rw как?
>> https://man7.org/linux/man-pages/man3/stdout.3.html
> мне нужно !два! десткриптора stdin и stdout завернуть в один дескриптор, где
> там в вашем мане это?

тебе уже написали в первом посте. создаёшь дескриптор, на удобном механизме межпроцессорного взаимодействия (в общем случае unix socket), пишешь/читаешь в/из него. на другом конце перенаправляешь.

другой конец - варианты приседаний:
- select stdin/socket в своём процессе с таймаутом
- select stdin/socket в thread или fork
- 2 thread или 2 fork - раздельно stdin и socket

перенаправление:
- read socket -> write stdout
- read stdin -> write socket

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #12

9. Сообщение от Ann None (?), 21-Авг-21, 19:54   +/
> мне в программе нужно завернуть stdin/stdout в дескриптор чтобы через него можно
> было полноценно делать read/write, подскажите какой алгоритм действий?

https://www.opennet.ru/man.shtml?topic=dup2
сюда попробуй

Ответить | Правка | Наверх | Cообщить модератору

10. Сообщение от муу (?), 21-Авг-21, 20:09   –1 +/
>>>>> мне в программе нужно завернуть stdin/stdout в дескриптор чтобы через него можно
>>>>> было полноценно делать read/write, подскажите какой алгоритм действий?
>>>> socat так не делает.
>>>> Если ты имеешь в виду "bidirectional pipe", то Linux так не делает.
>>>> man 7 pipe. Можно в BSD.
>>>> Вообще толком объясни, что ты хочешь. Походу, ни разу не дескриптор (чего?).
>>> завернуть stdio/stdout в один дескриптор rw как?
>> https://man7.org/linux/man-pages/man3/stdout.3.html
> мне нужно !два! десткриптора stdin и stdout завернуть в один дескриптор, где
> там в вашем мане это?

тебе нужно забыть про програмирование и про компуктеры вообще и полностью
тебе нужно найти работу грузчиком в пятёрочке или гдето там

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #11

11. Сообщение от cods (?), 22-Авг-21, 13:14   +/
>[оверквотинг удален]
>>>>> socat так не делает.
>>>>> Если ты имеешь в виду "bidirectional pipe", то Linux так не делает.
>>>>> man 7 pipe. Можно в BSD.
>>>>> Вообще толком объясни, что ты хочешь. Походу, ни разу не дескриптор (чего?).
>>>> завернуть stdio/stdout в один дескриптор rw как?
>>> https://man7.org/linux/man-pages/man3/stdout.3.html
>> мне нужно !два! десткриптора stdin и stdout завернуть в один дескриптор, где
>> там в вашем мане это?
> тебе нужно забыть про програмирование и про компуктеры вообще и полностью
> тебе нужно найти работу грузчиком в пятёрочке или гдето там

по вашему тону и знаниям вы сами давно в грузчиках батрачите

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #14

12. Сообщение от cods (?), 22-Авг-21, 13:19   +/
> тебе уже написали в первом посте. создаёшь дескриптор, на удобном механизме межпроцессорного
> взаимодействия (в общем случае unix socket), пишешь/читаешь в/из него. на другом
> конце перенаправляешь.

с ручной обработкой в потоке и так было понятно, просто было интересно может быть можно было сделать такое - типа создать свой дексриптор, переопределить ему read/write и отдать его.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #13

13. Сообщение от . (?), 22-Авг-21, 17:43   +1 +/
>> тебе уже написали в первом посте. создаёшь дескриптор, на удобном механизме межпроцессорного
>> взаимодействия (в общем случае unix socket), пишешь/читаешь в/из него. на другом
>> конце перенаправляешь.
> с ручной обработкой в потоке и так было понятно, просто было интересно
> может быть можно было сделать такое - типа создать свой дексриптор,
> переопределить ему read/write и отдать его.

в принципе, наверно такой механизм мог бы существовать - объединение 2х pipe дескрипторов в одну обструкцию. но мне кажется это слишком просто/узко. а если кому-то нужно клонировать запись в 2 пайпа и читать из одного? вариантов море.

если я правильно понял. тебе бы мысли формулировать чётче, потому что
> создать свой дексриптор, переопределить ему read/write и отдать его

понять не просто

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12

14. Сообщение от pavlinux (ok), 16-Сен-21, 13:19   +/
> давно в грузчиках батрачите

mkfifo -m 666 3; 2>&1 > 3;

Открывай 3, чем хошь и делать read/write

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #15

15. Сообщение от tester (??), 20-Сен-21, 15:11   +/
>> давно в грузчиках батрачите
> mkfifo -m 666 3; 2>&1 > 3;
> Открывай 3, чем хошь и делать read/write

а вот и нет! только unix socket, потому что именно асинхронное read/write

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру