Именованная труба, похожая на создание "mkfifo", но двунаправленная - PullRequest
7 голосов
/ 31 августа 2009

Я хотел бы создать именованный канал, например, созданный "mkfifo", но с одной оговоркой. Я хочу, чтобы труба была двунаправленной. То есть я хочу, чтобы процесс A записывал данные в fifo, а процесс B читал из него, и наоборот. Канал, созданный "mkfifo", позволяет процессу A читать данные, записанные в канал. Обычно я использую два канала, но я пытаюсь смоделировать реальное устройство, поэтому я бы хотел, чтобы семантика open (), read (), write () и т. Д. Была максимально похожа на реальное устройство. Кто-нибудь знает методику для достижения этой цели, не прибегая к двум каналам или именованным сокетам?

Ответы [ 2 ]

5 голосов
/ 31 августа 2009

или pty («псевдотерминальный интерфейс»). man pty.

5 голосов
/ 31 августа 2009

Использовать сокет Unix-домена.

О, вы сказали, что не хотите использовать единственное доступное решение - сокет домена Unix.

В этом случае вы застряли с открытием двух именованных каналов или без него. Или, конечно, напишите для них свой собственный драйвер устройства - в любом случае, вы можете сделать это для систем с открытым исходным кодом; это может быть сложнее для систем с закрытым исходным кодом (Windows, AIX, HP-UX).

...