Я хотел бы создать именованный канал, как тот, который был создан «mkfifo», но одно предостережение. Я хочу, чтобы труба была двунаправленной. То есть, я хочу, чтобы процесс А писал в fifo и обрабатывал B, чтобы читать от него, и наоборот. Труба, созданная «mkfifo», позволяет процессу A читать данные, записанные в трубу. Обычно я использую две трубы, но я пытаюсь имитировать фактическое устройство, поэтому я хотел бы, чтобы семантика open(), read(), write() и т. Д. Была максимально похожа на фактическое устройство. Кто-нибудь знает технику, чтобы выполнить это, не прибегая к двум трубам или названным сокетам?Именованная труба похожа на создание «mkfifo», но двунаправленная
7
A
ответ
5
Используйте сокет Unix-домена.
О, вы сказали, что не хотите использовать единственное доступное решение - сокет Unix-домена.
В этом случае вы застряли с открытием двух именованных труб или без него. Или, конечно, напишите свой собственный драйвер устройства, вы можете сделать это для систем с открытым исходным кодом; это может быть сложнее для закрытых исходных систем (Windows, AIX, HP-UX).
4
Или pty
(«псевдотерминальный интерфейс»). man pty
.
Pty поставляется с кучей вещей, которые вы не хотите - обычно. Как и вся обработка терминальной дисциплины. Но думать об этом не стоит. –