다음은 리눅스 환경에서 fork() 시스템 호출을 이용하여 자식 프로세스를 생성하는 C 프로그램이다. 출력 결과로 옳은 것은? (단, “pid = fork();” 문장의 수행 결과 자식 프로세스의 생성을 성공하였다고 가정한다)
정답 1번
fork() 시스템 호출 시 반환값(pid)에 따라 실행 경로가 달라집니다. 문제의 코드에서 v=1, n=5일 때 각 프로세스의 동작은 다 음과 같습니다. 1. 자식 프로세스 (pid == 0): v에 1부터 5까지의 곱을 누적합니다. 1 × 2 × 3 × 4 × 5 = 120 이므로 b = 120이 출력됩니다. 2. 부모 프로세스 (pid > 0): wait(NULL)로 자식 종료를 기다린 후, v에 1을 5번 더합니다. 1 + 1 + 1 + 1 + 1 + 1 = 6 이므로 a = 6이 출력됩니다. 따라서 최종 출력 결과는 b = 120, a = 6입니다. 오답·함정 포인트: 문제에서 요구하는 방향이 ‘옳은 것’인지 ‘옳지 않은 것’인지 먼저 표시한 뒤, 정답 선택지의 핵심 정의와 나머지 선택지의 정의를 대조하면 실수를 줄일 수 있습니다.