fork함수 리턴값개수가 궁금합니다

godjtl2의 이미지

fork함수를 쓰게되면 리턴값의 개수는 2개를받나요 아니면 3개를받나요..?

rediori의 이미지

리턴값은 1개 입니다.
대신 프로세스가 하나 더 생성이 되는 거고,
부모 프로세스는 자식의 pid, 자식 프로세스는 0을 리턴값으로 받습니다.

익명 사용자의 이미지

* 리턴 값은 1개
그러나, 고찰이 필요합니다.

pid = fork(); // 이 문장을 가정합니다.

1) fork() 자체가 실패시
pid 에 -1 값을 리턴

2) fork() 성공
** 성공하는 순간 프로세스가 2개가 됩니다.

** 하나는, fork()를 호출한 프로세스(부모)
** 다른 하나는, fork() 호출에 의해 생긴 프로세스(자식)

------ 여기부터는 2개의 프로세스 -----
*** 이 두 프로세스가 각각 리턴값을 가지게 됩니다.
pid = {부모임을 명시}; // 부모는 자식의 식별자(pid)를 알 방법이 없으므로, 자식의 pid()가 리턴됩니다.
pid = {자식임을 명시}; // 자식은 부모의 식별자(pid)를 필요시 getppid()라는 시스템호출로 알 수 있으므로, 그냥 0을 리턴해 줍니다.
위 2가지 리턴값에 따라, 0이면 자식프로세스, 그렇지 않으면(pid > 0) 부모 프로세스로 인식하게 됩니다.