티스토리 뷰

OS/Unix & Linux

fork() 시스템 호출 함수

j0n9m1n1 j0n9m1n1 2018.03.28 00:35

fork() 시스템 호출에 대하여 정리할 것


fork 함수는 unistd.h(POSIX operating system API에 접근을 제공하는 헤더) 안에  system call로 정의되어 있습니다.


fork()는 현재 실행되는 프로세스에 대해 복사본 프로세스를 생성합니다.

원본 프로세스와 복제 프로세스는 부모, 자식 관계를 갖게 됩니다.

fork()가 정상적으로 실행되면

부모 프로세스는 생성된 자식 프로세스의 PID값을 리턴되어 가지게 되고, 자식 프로세스는 PID값이 0으로 리턴되어 가지게 됩니다.

//복제된 프로세스 내에서는 fork()함수의 반환값(pid)이 저장된 변수는 0이 됩니다.


----------------------------------------------------------------------------------------------------------------------------------


fork()로 인해 분기 되어 프로세스가 시작되는 것은  fork 바로 다음 부터입니다.


원래기존에 있는 프로세스를 부모 프로세스 새로 생성된 프로세스는 자식 프로세스라고 합니다.


프로세스 고유정보(pid, ppid)는 복제되지 않습니다.


부모 프로세스와 자식프로세스는 독립적으로 수행됩니다.


자식 프로세스는 unique한 id를 가집니다.


자식 프로세스의 ID는 어떠한 실행중인 그룹 ID와도 일치 하지 않습니다.


자식 프로세스에는 부모 프로세스 파일 설명자의 고유한 복사본이 있습니다. 각 자식프로세스 파일 설명자는 부모프로세스의 해당 파일 설명자와 동일한 열린 파일 설명을 참조합니다.



pid_t fork(void)의 리턴값


성공 시 : 부모 프로세스에서는 자식 프로세스의 PID값을 반환 받고


          자식 프로세스에서는 0 값을 반환 받습니다.


실패 시 : 음수 값(-1) 반환 합니다.



fork()에 대해 서술 되어있는 링크 입니다.


http://pubs.opengroup.org/onlinepubs/7908799/xsh/fork.html



FreeBSD fork() 소스 링크 입니다.


http://fxr.watson.org/fxr/source/kern/kern_fork.c?v=FREEBSD8

'OS > Unix & Linux' 카테고리의 다른 글

fork() 시스템 호출 함수  (0) 2018.03.28
댓글
댓글쓰기 폼