The OpenNET Project / Index page

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



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

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

Оглавление

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


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

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

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

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

или, может, mkfifo

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

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

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

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

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

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

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


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

4. "socat, как оно это делает?"  +/
Сообщение от муу (?), 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ообщить модератору

6. "socat, как оно это делает?"  +/
Сообщение от 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ообщить модератору

7. "socat, как оно это делает?"  +/
Сообщение от AnonymPatient (?), 21-Авг-21, 09:33 
...

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

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


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

8. "socat, как оно это делает?"  +/
Сообщение от . (?), 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

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

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

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

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

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

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

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

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

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

10. "socat, как оно это делает?"  –1 +/
Сообщение от муу (?), 21-Авг-21, 20:09 
>>>>> мне в программе нужно завернуть 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 завернуть в один дескриптор, где
> там в вашем мане это?

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

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

11. "socat, как оно это делает?"  +/
Сообщение от 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ообщить модератору

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

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

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

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

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

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

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

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

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

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

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

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




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

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