Процессы дочернего процесса 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/ 

Затем найдите PID родительского процесса bash, убейте его.

Обратите внимание на то, как появилось приглашение оболочки, что свидетельствует о том, что наша оболочка уже ждет своего дочернего элемента.

Но если вы что-то делаете в файловой системе, чтобы инициировать inotify, чтобы сообщать больше событий, он продолжает сбрасывать на терминал. На OS X это не происходит, потому что все они будут мертвы.

ps uf снова. Посмотрите, что как inotifywait, так и sed теперь являются дочерними элементами init .

Мне это кажется совершенно неправильным.

Что говорит POSIX об этом?