2009-08-31 79 views
7

我想創建一個命名管道,就像由「mkfifo」創建的管道,但一個警告。我希望管道是雙向的。也就是說,我希望進程A寫入fifo,並且處理B從中讀取,反之亦然。由「mkfifo」創建的管道允許進程A讀取寫入管道的數據。通常我會使用兩個管道,但我試圖模擬一個實際的設備,所以我希望open(),read(),write()等的語義儘可能類似於實際設備。任何人都知道一種技術來實現這一點,而不訴諸兩個管道或命名的套接字?命名管道類似於「mkfifo」創建,但雙向

回答

5

使用Unix域套接字。

哦,你說你不想使用唯一可用的解決方案 - 一個Unix域套接字。

在這種情況下,您會被打開兩個命名管道,或者沒有。或者爲他們編寫自己的設備驅動程序 - 無論如何,您都可以爲開源系統做到這一點;對於封閉的源系統(Windows,AIX,HP-UX)可能會更困難。

4

pty(「僞終端接口」)。 man pty

+3

一個pty帶有一堆你不想要的東西 - 通常。像所有終端紀律處理一樣。但它在盒子外面提及它。 –