2009-08-31 11 views
7

Chciałbym utworzyć nazwaną potokę, taką jak ta stworzona przez "mkfifo", ale jedno zastrzeżenie. Chcę, aby rura była dwukierunkowa. To znaczy, chcę, aby proces A zapisywał do fifo i przetwarzał B, aby odczytać z niego i na odwrót. Rura stworzona przez "mkfifo" umożliwia procesowi A odczytanie danych zapisanych w rurze. Normalnie użyłbym dwóch rur, ale próbuję zasymulować rzeczywiste urządzenie, więc chciałbym, aby semantyka open(), read(), write(), etc była jak najbardziej podobna do rzeczywistego urządzenia. Ktoś zna technikę, aby to osiągnąć bez uciekania się do dwóch rur lub nazwanego gniazda?Nazwany potok podobny do "mkfifo", ale dwukierunkowy

Odpowiedz

5

Użyj gniazda domeny Unix.

Och, powiedziałeś, że nie chcesz używać jedynego dostępnego rozwiązania - gniazda domeny Unix.

W takim przypadku utknąłeś z otwarciem dwóch nazwanych potoków lub bez. Lub oczywiście napisać dla nich własny sterownik urządzenia - i tak można to zrobić dla systemów Open Source; może być trudniejsze dla zamkniętych systemów źródłowych (Windows, AIX, HP-UX).

4

Lub pty ("interfejs pseudo-terminalowy"). man pty.

+3

Pty ma wiele rzeczy, których nie chcesz - zwykle. Podobnie jak w przypadku obsługi terminalu. Ale myśli o tym poza polem. –

Powiązane problemy