이 코드의 동작을 이해하는 문제가 종종불규칙한 결과가
Parent process, fork return value: 343
Child process, fork return value: 0
그러나 그것의 나만을 제공 쉘 프롬프트없이이 결과 :
Child process, fork return value: 0
부모 프로세스에서 wait() 함수로 해결할 수 있습니다. 그러나 나는 알고 싶어 :
결과가 불규칙한 이유는 무엇입니까? 누군가가 무슨 일이 일어 났는지 설명해 주시겠습니까? 자식 프로세스가 좀비가되지만 부모가 printf() 함수 호출을 처리하지 않는 이유는 무엇입니까?
나는 리눅스에이 시도하고 당신이 무엇을 설명 관찰 할 수 없었다 :이 코드
나는 여러 번 자녀 또는 부모의 TEH 출력 라인 프롬프트가 없었 비트했습니다. 대신 나는 항상 두 가지 메시지를 모두 얻는다. 나는 심지어 아버지와/또는 아이에게 잠을 자려고했지만 기대했던 지연 외에도 아무것도 바뀌지 않았습니다. 또한 이론적으로 나는 당신의 관찰에 대한 설명을 찾을 수 없습니다. 이 일이 당신 시스템에서 어떤 일이 일어나는지에 관해 우리에게 말해 주시겠습니까? – Alfe아버지 프로세스는 메시지도 인쇄해야합니다. 좀비 프로세스는 부모 프로세스가 실행되기 전에 자식 프로세스가 실행을 완료하는 프로세스입니다. printf는'좀비 프로세스 '가되기 전에 실행됩니다. 부모 프로세스는 자식 프로세스에 상관없이 메시지를 출력해야합니다 ... 리다이렉트하지 않은 것과 동일한'stdout'을 포크 공유 한 후에는 프로세스가 분리되어 있습니다. –