유닉스 프로그래밍을 배우려고하는데 fork ()에 관한 질문이 나왔습니다. fork ()가 현재 실행중인 프로세스와 동일한 프로세스를 생성한다는 것을 알고 있지만 어디에서 시작합니까? 예를 들어 코드가 있다면
int main (int argc, char **argv)
{
int retval;
printf ("This is most definitely the parent process\n");
fflush (stdout);
retval = fork ();
printf ("Which process printed this?\n");
return (EXIT_SUCCESS);
}
출력은 다음과 같습니다.
이것은 가장 확실하게 부모 프로세스입니다.
어느 프로세스가 이것을 인쇄 했습니까?
어떤 프로세스가 이것을 인쇄 했습니까?
나는 그것이 fork()
동일한 프로세스 를 생성 한다고 생각 했기 때문에 처음에는 그 프로그램에서 fork()
호출이 재귀 적으로 영원히 호출 될 것이라고 생각했습니다. 전화 fork()
후 새로운 프로세스가 시작된 것 같아요 fork()
?
부모 프로세스와 자식 프로세스를 구별하기 위해 다음 코드를 추가하면
if (child_pid = fork ()) printf ("This is the parent, child pid is %d\n", child_pid);
else printf ("This is the child, pid is %d\n",getpid ());
fork () 호출 후 자식 프로세스는 어디에서 실행을 시작합니까?
man fork
질문에 대답하기에 충분할 것입니다. btw