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