2016-05-24 1 views
2

をハング私はこの1つがハングオープニングパイプが

mkfifo my_fifo 
exec 3<$my_fifo 

を読み取るためのファイルディスクリプタを開きたいです。私は

exec 3<>$my_fifo 

を行う一方

は、その後、それは動作します。どうして?

答えて

4

読み取りのためにfifo(名前付きパイプ)をオープンすると、あるプロセスのFIFOが書き込み用にオープンするまでハングし、その逆もあります。だから開いているとき、あなたはパイプの "反対側"が開いていることを知っている。

Linuxでは、パイプを両方向で開くことができます。これを行うと、パイプの両端が開いているので、開いたままですぐに戻ります。これはPosixの拡張版であり、すべてのシステムで動作しません。

man 7 fifo詳細情報があります。