여러 포크를 사용하는 프로그램을 만들려고합니다.
는 나 자신 그대로가 완벽하게 작동 Multiple fork() ConcurrencyC에서 다중 포크 예제
를 시작하는 데이 예제를 사용했다. 그러나 다음과 같이 자식에 print 문을 추가하려고 할 때 :
if ((p = fork()) == 0) {
// Child process: do your work here
printf("child %i\n", ii);
exit(0);
}
프로세스가 완료되지 않습니다. 자녀에게 물건을 넣고 부모가 프로그램 실행을 끝내게하려면 어떻게해야합니까? 변경된 성공, 상태 자식의 프로세스 ID를 반환 귀하의 예제 코드에서
무슨 일이 당신의 과정은 어떻게됩니까? 출력물을 보시겠습니까? –
가지고있는 코드를 더 보여줘야합니다. 문제는 당신이 우리에게 보여준 것이 아닙니다. 'ii'가 무엇으로 설정되었는지는 명확하지 않습니다. 프로세스 ID를 출력하기 위해'getpid()'를 사용하는 것이 좋습니다. (예를 들어 필요에 따라 부모 프로세스에서'ii '가 증가하지 않는 방식을 상상할 수 있습니다.) –
자식에서'exit '을 호출하지 마십시오. '_exit'를 사용하십시오. 그렇지 않으면, 하위 프로세스는 부모 프로세스에서 여전히 사용중인 리소스를 비우고 지울 수 있습니다. 예를 들어, 부모가 사용중인 파일 설명자의 현재 위치를 변경할 수 있습니다. 이로 인해 데이터가 손상 될 수 있습니다. –