fork() 호출하면
parent process 랑 fork()로 생성된 child process 가 동시에 작업하는거임? 아니면 parent process 일 끝나고 sleep같은거로 잠시 프로세스를 재울때 child process가 동작하는거임? 테스트해보려고
pid = fork();
if(pid == 0){
puts("child process run");
return 1;
}
else{
puts("parent process run");
sleep(10);
}
return 0;
요렇게 테스트 해봤는데 결과는
parent process run
10초후
child process run
요렇게 나왔는데 프로세스 실행현황에서는 그 10초동안 fork로 생성한 프로세스가 좀비 프로세스로 나타나는데 이 말인 즉슨 이미 child process는 할일 다 마치고 parent process가 끝날때까지 기다리는건데 그러면 왜 puts("child process run") 이라는 문구가 10초뒤에 나오는거지..? 알려주셈 실행환경은 리눅스 우분투
멀티프로세싱은 동시에 도는 게 맞을텐데..? 예전에 모 언어의 멀티쓰레드 지원이 부족해서 멀티프로세싱을 응용해서 서버도 짜고 그랬었는데. sleep의 영향으로 stdout의 flush가 안 발생하면서 자식스레드까지 영향이 간게 아닌가 싶기도 하고.. 모르겠다.
차일드에서플러시해주면바로보일꺼임