Linux子进程没有被剔除

Linux子进程没有被剔除

这导致 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,杀死它。

请注意 shell 提示符是如何返回的,表明我们的 shell 已完成对其子级的等待。

但是,如果您在文件系统上执行任何操作来触发 inotify 报告更多事件,它会继续转储到终端。在 OS X 上,这种情况不会发生,因为它们都会死掉。

ps uf再次。看到 inotifywait 和 sed 现在都是 的子级init

这对我来说似乎完全错误。

POSIX 对此有何评论?

相关内容