2017-03-17 2 views
1

나는 상위 및 연통 파이프를 통해 자식 프로세스가 시그널링 부모 - 아이는 waitpid. 부모 글쓰기 및 아이 읽기. 또한, 일단 어린이가 읽는 것을 끝내면 읽은 데이터에 대해 어떤 처리를합니다. 부모가 자식이이 데이터로 처리를 끝낼 때까지 대기해야합니다 (종료하지 않음).

내가 필요한 것은 부모와 자식 간의 간단한 대기/신호 메커니즘입니다.

나는이 작성하신 후, (child_process_id, & 상태, 플래그) waitpid를 호출 할 수 있습니다, 부모를 생각합니다. 그러나 나는 자녀가 국가의 변화에 ​​대해 어떻게 신호 할 수 있는지, 그리고 부모는 어떤 플래그를 기다려야하는지 잘 모릅니다.

는 포인터를 주셔서 감사합니다!

답변

0

당신은 사용자 정의 신호를 사용할 수 있습니다. 이 경우, 하위 프로세스는 getppid()을 사용하여 부모 프로세스를 가져 와서 해당 신호를 kill을 통해 보냅니다. 한편, 부모는 signal을 통해 특정 신호에 대한 신호 처리기를 설정하고 waitpid을 사용하여 대기합니다. waitpid이 인터럽트 가능하기 때문에 부모는 처리가 끝났음을 부모에게 알리고 어떤 이유로 든 신호를 보내지 않고 자식이 사망하면 대기를 멈 춥니 다. 대안

단지 설치 부모 자식 판독 기록하는 제 2 파이프. 부모는 단순히 파이프 끝을 읽습니다. 하위 프로세스는 처리가 완료되었음을 부모에게 알리고 파이프를 닫는 단문 메시지 (OK 또는 DONE)를 작성합니다. 부모는 메시지를받습니다. 처리가 올바르다는 것을 알고 있습니다. 메시지가 없으면 파이프가 닫히고, 무엇인가 잘못되었다는 것을 알게됩니다. IMHO, 이것은 설치하는 것이 더 간단합니다.