2009-08-31 7 views
7

Je voudrais créer un tube nommé, comme celui créé par "mkfifo", mais une mise en garde. Je veux que le tuyau soit bidirectionnel. C'est-à-dire que je veux que le processus A écrive dans le fifo, et que le processus B le lise, et vice-versa. Un tube créé par "mkfifo" permet au processus A de lire les données qu'il a écrites dans le tube. Normalement j'utiliserais deux pipes, mais j'essaye de simuler un périphérique réel ainsi je voudrais que la sémantique d'open(), de read(), d'write(), etc. soit semblable au dispositif réel comme possible. Quelqu'un sait-il d'une technique pour accomplir ceci sans recourir à deux pipes ou à une douille nommée?Canalisation nommée similaire à la création "mkfifo", mais bidirectionnelle

Répondre

5

Utilisez un socket de domaine Unix. Oh, vous avez dit que vous ne voulez pas utiliser la seule solution disponible - une socket Unix-domaine.

Dans ce cas, vous êtes bloqué avec l'ouverture de deux tuyaux nommés, ou vous en êtes privé. Ou écrivez votre propre pilote de périphérique pour eux, bien sûr - vous pouvez le faire pour les systèmes open source, de toute façon; cela pourrait être plus difficile pour les systèmes à source fermée (Windows, AIX, HP-UX).

4

ou pty ("interface pseudo-terminal"). man pty.

+3

Un pty vient avec un tas de choses que vous ne voulez pas - habituellement. Comme toutes les manipulations de la discipline terminale. Mais c'est sortir des sentiers battus pour le mentionner. –

Questions connexes