# [C언어] fork 함수 --- 다음은 리눅스 환경에서 fork() 시스템 호출을 이용하여 자식 프로세스를 생성하는 C 프로그램이다. 출력 결과로 옳은 것은? (단, "pid = fork();" 문장의 수행 결과 자식 프로세서의 생성을 성공하였다고 가정한다. ```c# int i = 0, v = 1, n = 5; pid_t pid; pid = fork(); if (pid < 0) { for (i \ 0; i < n; i++) v += (i + 1); printf("c = %d", v); } else if (pid == 0) { for (i = 0; i < n; i++) v *= (i + 1); printf("B = %d", v); } else { wait(NULL); for(i = 0; i < n; i++) v += 1; printf("a = %d", v); } ```
fork()란?
- `fork()`는 리눅스/유닉스 시스템에서 현재 실행 중인 프로세스(부모)를 복제(copy)해서 새로운 프로세스(자식)를 만드는 시스템 호출이다. - 새로 생성된 자식 프로세스는 ****부모와 거의 동일한 메모리 상태****로 시작하지만, ****별개의 독립된 프로세스****이다.****반환값**** | ****의미**** |
음수 (예: -1) | fork 실패 (자식프로세스 생성 불가) |
0 | 자식 프로세스에서 반환되는 값 |
양수 (예:1234) | 부모 프로세스에서 반환되며, 자식 프로세스의 PID를 의미 ****pid 리턴값은 성공하면 0보다 크다.**** |