0
그래서 아래 코드에 대한 내 결과물에는 D를 두 번 인쇄하는 것이 포함되어 있는데 그 이유를 이해할 수 없습니다. 누군가가 나에게 설명 할 수 있다면 좋을 것이다.포크와 printf()
int main() {
int r = fork();
printf("B\n");
int t = fork();
printf("C\n");
if(r == 0) {
printf("D\n");
} else if (r > 0 && t == 0){
printf("E\n");
}
printf("F\n");
return 0;
}
감사합니다.
처음'fork()'가 자식을 생성했습니다. 두 번째'fork()'는 부모로부터 자식을 만들고 첫 자식 (자식)에서 자식을 생성했습니다. 부모 프로세스는'r> 0'을 가지므로'D'를 출력하지 않습니다. 다른 아이를 포크하는 자식 프로세스는 둘 중 하나만 t == 0이 되겠지만'r == 0 '을 갖습니다. 요약하자면, 원래의 자녀와 손주는 모두'D'를 인쇄했습니다. – alvits