fork()를 사용하여 새 프로세스를 만드는 프로그램을 만들려고합니다. 샘플 출력은 다음과 같아야합니다.fork() 자식 프로세스와 부모 프로세스
이것은 하위 프로세스입니다. 내 PID는 733이고 부모의 ID는 772입니다.
이것은 상위 프로세스입니다. 내 PID는 772이며, 자녀의 ID이 내가 내 프로그램 코딩하는 방법이다 773
입니다 : 이것은 출력 결과
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), fork());
return 0;
}
:
이 자식 프로세스입니다. 내 PID는 22163이고 부모의 ID는 0입니다.
이것은 하위 프로세스입니다. 내 PID는 22162이고 부모의 ID는 22163입니다.
왜 문을 두 번 인쇄하고 자식 ID가 첫 번째 문장에 표시되면 부모의 ID를 제대로 표시 할 수 있습니까?
편집 : 당신이 한 번 프로그램의 실행에 한 번 포크에 두 번의 printf를 호출하기 때문에
#include <stdio.h>
#include <stdlib.h>
int main() {
int pid = fork();
if (pid == 0) {
printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), getppid());
}
else {
printf("This is the parent process. My pid is %d and my parent's id is %d.\n", getpid(), pid);
}
return 0;
}
프로그램에서 "부모 프로세스"라는 단어를 아무 곳이나 인쇄하려고하지 않습니다. 그것들은 프로그램 텍스트에 나타나지 않습니다. 왜 당신은 그것들이 인쇄되기를 기대합니까? –
'man fork'. 읽어. 단어를 이해하십시오. 직접 자신을 찾을 수있는 방법이 없을 때 StackOverflow로 이동하십시오. 이 경험을하려면 더 나은 프로그래머가 될 것입니다. – asveikau
또한'fork'는 자식에게 부모 프로세스 ID를 반환하지 않습니다. 자식에게 0을 반환하고 부모에게는 자식의 ID를 반환합니다. 그것이 당신이 어떤 것인지를 알 수있는 방법입니다. –