2016-05-24 4 views
2

Je veux ouvrir un descripteur de fichier pour la lecturetuyau d'ouverture avec exec pend

mkfifo my_fifo 
exec 3<$my_fifo 

Celui-ci se bloque.

D'autre part, quand je fais

exec 3<>$my_fifo 

Ensuite, il fonctionne. Pourquoi?

Répondre

4

L'ouverture d'un fifo (tube nommé) pour la lecture se bloque jusqu'à ce que certains processus aient ouvert le fifo pour l'écriture, et vice versa. Ainsi, lorsque l'ouverture revient, vous savez que "l'autre extrémité" du tuyau est ouverte.

Linux vous permet d'ouvrir un tuyau dans les deux sens. Si vous faites cela, les deux extrémités du tuyau sont ouvertes, de sorte que l'ouverture retourne immédiatement. Ceci est une extension de Posix et ne fonctionnera pas sur tous les systèmes.

man 7 fifo a plus d'informations.