** 하나는, fork()를 호출한 프로세스(부모)
** 다른 하나는, fork() 호출에 의해 생긴 프로세스(자식)
------ 여기부터는 2개의 프로세스 -----
*** 이 두 프로세스가 각각 리턴값을 가지게 됩니다.
pid = {부모임을 명시}; // 부모는 자식의 식별자(pid)를 알 방법이 없으므로, 자식의 pid()가 리턴됩니다.
pid = {자식임을 명시}; // 자식은 부모의 식별자(pid)를 필요시 getppid()라는 시스템호출로 알 수 있으므로, 그냥 0을 리턴해 줍니다.
위 2가지 리턴값에 따라, 0이면 자식프로세스, 그렇지 않으면(pid > 0) 부모 프로세스로 인식하게 됩니다.
리턴값은 1개 입니다. 대신 프로세스가 하나 더
리턴값은 1개 입니다.
대신 프로세스가 하나 더 생성이 되는 거고,
부모 프로세스는 자식의 pid, 자식 프로세스는 0을 리턴값으로 받습니다.
* 리턴 값은 1개 그러나, 고찰이
* 리턴 값은 1개
그러나, 고찰이 필요합니다.
pid = fork(); // 이 문장을 가정합니다.
1) fork() 자체가 실패시
pid 에 -1 값을 리턴
2) fork() 성공
** 성공하는 순간 프로세스가 2개가 됩니다.
** 하나는, fork()를 호출한 프로세스(부모)
** 다른 하나는, fork() 호출에 의해 생긴 프로세스(자식)
------ 여기부터는 2개의 프로세스 -----
*** 이 두 프로세스가 각각 리턴값을 가지게 됩니다.
pid = {부모임을 명시}; // 부모는 자식의 식별자(pid)를 알 방법이 없으므로, 자식의 pid()가 리턴됩니다.
pid = {자식임을 명시}; // 자식은 부모의 식별자(pid)를 필요시 getppid()라는 시스템호출로 알 수 있으므로, 그냥 0을 리턴해 줍니다.
위 2가지 리턴값에 따라, 0이면 자식프로세스, 그렇지 않으면(pid > 0) 부모 프로세스로 인식하게 됩니다.
댓글 달기