반응형
프로세스 이미지 복제
- 동시에 여러 기능을 수행하고자 할 때는 스레드를 사용할 수도 있고, init이 하는 것 처럼 한 프로그램안에서 개벌젹인 프로세스를 생성할 수 있다.
- fork 함수를 호출하여 생성할 수 있다. 이 함수는 현재 프로세스를 복재해서 프로세스 테이블에 새로운 항목을 생성한다. (exec처럼 현재 프로세스를 다른 프로세스로 "대체"하는 것이 아니라) 새 프로세스는 현재 프로세스의 여러 특성들을 물려받는다. 새 프로세스는 원래의 프로세스와 동알한 코드를 수행한다. 그러나 자료공간 환경 파일 서술자들은 개별적이다.
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
복제를 실패하면 -1을 돌려준다.
부모가 가질 수 있는 자실 프로세스 개수의 한계를 넘거나, 프로세스 테이블이 꽉찼거나, 가상메모리가 부족하거나 할때 실패하고 errno에 ENOMEM이 설정된다.
예제 소스
실행 결과
첫 실행에서 부모 프로세스는 자식 프로세스를 생성한다. 부모 프로세스가 자신의 메시지를 세 번 반복해서 출력하는 반면, 자식프로세스는 메시지를 다섯번 출력한다. 실행 결과에슨 중간에 셸 프롬프트가 끼어있는데 이것은 자식 프로세스가 메시지를 모두 출력하기 전에 부모 프로세스가 끝났기 때문이다.
반응형
'개발 > Linux' 카테고리의 다른 글
프로세스와 신호 - 좀비 프로세스 (0) | 2014.11.07 |
---|---|
프로세스와 신호 - 프로세스 종료 기다리기 (0) | 2014.11.07 |
프로세스와 신호 - 프로세스 이미지 대체하기 (0) | 2014.11.07 |
프로세스와 신호 - 새 프로세스 시작하기 (0) | 2014.11.07 |
프로세스와 신호 - 프로세스 일정 관리 (0) | 2014.11.06 |