fork() 관련 함수 질문이요
상큼한캔디
2023.04.01
fork() 함수 공부중입니다.
연습문제 풀다가 모르는게 있어서요
다음 코드에서 hello 가 몇번 출력되는지 맞추는건데요 이해가 안가요
#include csapp.h
void doit()
{
if(fork() == 0)
{
fork();
printf(hello\n);
return;
}
return;
}int main()
{
doit();
print(hello\n);
exit(0);
}
doit() 함수 안에 return 문때문에 hello 가 5번이 출력이 된다는데요
return대신에 exit(0); 을 쓰면 3번 출력이 되고요..
왜 5번이나 출력이 되는지..모르겠어요;; 설명 부탁드려요.. ^^
-
파이팅
이제 이해되네요 답변 감사드려요 ~
-
후력
일단 doit()의 if 절의 fork에서 프로세스가 두 개로 나눠지고, 부모 프로세스는 if 절 안으로 안 들어가고 그냥 main으로 돌아가서 한 번 hello를 찍겠죠
자식 프로세스는 if 절 안으로 들어가는데 그 안에 fork가 또 있으므로 자식의 자식 프로세스가 생기게 되고 이 두 프로세스는 if 절 안에서 hello를 한 번, doit()이 끝나고 main에서 또 한 번, 두 번씩 네 번을 찍으므로 부모가 찍는 것까지 해서 다섯 번을 찍게 됩