FORK(2)

이름
fork - 자식 프로세스를 만든다.

사용법
#include <unistd.h>

pid_t fork(void);

설명
fork는 부모 프로세스와는 단지 PID와 PPID만이 다른 자식 프로세스를 만든다. 그리고 자원 사용량을 0으로 맞춘다. 파일 락(lock)과 시그널 펜딩(pending)은 상속받지 않는다.

리눅스에서, fork는 copy-on-wite 페이지들를 사용하여 수행되며, fork의 유일한 단점은 부모 프로세스의 페이지 테이블을 복사하고 자식 프로세스에 대한 task 구조체를 만들기 위해 필요한 시간과 메모리이다.

반환값
성공시, 자식 프로세스의 PID가 부모에게 리턴되며, 자식에게는 0이 리턴된다. 실패할 경우, -1이 부모에게 리턴되며, 자식은 생성되지 않는다. 그리고 errno는 적절한 값으로 설정된다.

에러

EAGAIN
    부모 프로세스의 페이지 테이블들을 복사하기 위한 충분한 메모리를 할당할 수 없거나 자식 프로세스를 위해 태스크 구조체를 할당할 수 없다.

ENOMEM
    메모리가 꽉 차서 필요한 커널 구조체를 할당할 수 없다.

호환
SVr4, SVID, POSIX, X/OPEN, BSD 4.3

관련 항목
clone(2), execve(2), vfork(2), wait(2)

역자
정강훈 <skyeyes@soback.kornet.net>, 2000년 4월 27일