![Linux サブプロセスが追い出されない [閉じる]](https://linux33.com/image/49190/Linux%20%E3%82%B5%E3%83%96%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%8C%E8%BF%BD%E3%81%84%E5%87%BA%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%20%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
これにより、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はこれについて何と言いますか?