코드베이스에는 fork()와 SIGCHLD 설치를 통해 임의의 양의 외부 프로그램을 실행하고 종료 코드를 모니터링 할 수있는 소프트웨어가 있습니다 매니저. 유닛 테스트 케이스에서이 소프트웨어는 잘 작동합니다.popen과 SIGCHLD 처리기를 병렬로 작동 시키려면
그러나이 포크 "서버"를 실행하는 프로세스는 여러 스레드에서 많은 소프트웨어 모듈을 실행 중입니다. 불행히도이 소프트웨어의 한 부분은 자체 SIGCHLD 처리기를 사용해야하는 popen()을 사용하고 있습니다. 우리가 볼 수있는 결과는 errno ECHILD를 사용하여 pclose()를 호출 할 때 프로그램이 실패한다는 것입니다.
SIGCHLD 처리기와 popen/pclose에 대한 호출을 동시에 사용할 수 있습니까?