편집복원내용 검수 완료2026년 정보처리기사 2회 필기 · 프로그래밍 언어 활용 · 63번
다음 POSIX C 코드에서 fork()가 성공했을 때 부모 프로세스와 자식 프로세스가 실행하는 분기를 옳게 설명한 것은?
pid_t pid = fork();
if (pid < 0) puts("error");
else if (pid == 0) puts("child");
else puts("parent");
1
자식 프로세스는 fork()의 반환값으로 부모 프로세스의 PID를 받는다.
오답 이유자식 쪽 fork() 반환값은 부모 PID가 아니라 0이다. 부모 PID가 필요하면 getppid() 같은 별도 인터페이스를 사용한다.
2
부모와 자식 프로세스 모두 pid == 0 분기를 실행한다.
오답 이유pid == 0 조건은 자식에서만 참이다. 부모가 받는 반환값은 생성된 자식의 PID인 양수다.
3
부모 프로세스는 양수인 자식 PID를 받고, 자식 프로세스는 0을 받는다.
정답 근거POSIX가 정의한 성공 반환 규칙과 정확히 일치한다. 이 차이를 이용해 같은 코드에서 부모·자식의 작업을 나눈다.
4
fork() 한 번이 성공하면 부모 외에 자식 프로세스 두 개가 생성된다.
오답 이유성공한 fork() 한 번은 기존 부모에 자식 하나를 추가하므로 실행 프로세스는 총 두 개가 된다.
정답·상세해설
정답 3번
fork()는 호출한 프로세스를 복제하여 자식 프로세스 하나를 만든 뒤 두 프로세스 모두 호출 다음 지점에서 실행을 계속하게 한다. 성공 시 부모에는 자식의 프로세스 ID인 양수가, 자식에는 0이 반환되므로 부모는 parent, 자식은 child를 출력한다. 따라서 ③이 정답이다.