이로 인해 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는 이에 대해 뭐라고 말합니까?