리눅스마스터1급: 자식 프로세스를 만드는 fork
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,246 조회
- 0 추천
- 목록
본문
리눅스마스터1급: 자식 프로세스를 만드는 fork
fork
자식 프로세스를 만든다.
리눅스 환경에서 사용자가 새로운 프로세스를 생성할 수 있는 방법은 두 가지가 있다.
첫 번째는 fork() 시스템 호출로, 어떤 프로세스가 자신의 사본을 생성하는 데 사용한다.
이때 fork()를 부른 프로세스를 부모 프로세스라 부르고, 새로 생성된 프로세스를 자식 프로세스라고 부른다.
이와 같은 방법은 프로세스의 수를 증가시키기 위한 전통적인 기법으로 fork() 후에는 두 개가 거의 동일한 프로세스인 부모(Parent)와 자식(Child)이 생긴다.
1) 개요
|
|
|
| #include <unistd.h> pid_t fork(void); |
|
|
|
|
2) 설명
fork는 부모 프로세스와는 단지 PID와 PPID만이 다른 자식 프로세스를 만든다.
그리고 자원 사용량을 0으로 맞춘다.
파일 록(lock)과 시그널 펜딩(pending)은 상속받지 않는다.
리눅스에서 fork는 copy-on-wite 페이지들을 사용하여 수행되며, fork의 유일한 단점은 부모 프로세스의 페이지 테이블을 복사하고 자식 프로세스에 대한 task 구조체를 만들기 위해 필요한 시간과 메모리이다.
① 반환값
성공 시 자식 프로세스의 PID가 부모에게 리턴되며, 자식에게는 0이 리턴된다.
실패할 경우, -1이 부모에게 리턴되며, 자식은 생성되지 않는다.
그리고 errno는 적절한 값으로 설정된다.
② 에러
∙EAGAIN : 부모 프로세스의 페이지 테이블들을 복사하기 위한 충분한 메모리를 할당할 수 없거나 자식 프로세스를 위해 태스크 구조체를 할당할 수 없다.
∙ENOMEM : 메모리가 꽉 차서 필요한 커널 구조체를 할당할 수 없다.
관련자료
-
이전
-
다음