これにより、BSDとLinuxの間のスクリプトの移植性に深刻な問題が発生します。
CentOS 6.4でこれが起こりました。
私は素敵なコンパクトなテストケースを持っています。
bash -c "inotifywait -mcr . | sed s/CLOSE/z/"
ps uf
そして観察してください:
\_ bash -c inotifywait -mcr . | sed s/CLOSE/z/
\_ inotifywait -mcr .
\_ sed s/CLOSE/z/
次に、bash親プロセスのPIDを見つけて終了します。
シェルプロンプトがどのように返されるかを確認します。これは、シェルが子を待機したことを示します。
ただし、より多くのイベントを報告するためにinotifyをトリガーするファイルシステムで操作を実行すると、端末に引き続きダンプされます。 OS Xではすべて死ぬので、これは起こりません。
ps uf
再び。 inotifywaitとsedが両方の子であることを確認してくださいinit
。
これは私にとって完全に間違っているようです。
POSIXはこれについて何と言いますか?