본문 바로가기

개발/Linux

프로세스와 신호 - 프로세스 이미지 복제

반응형

프로세스 이미지 복제

- 동시에 여러 기능을 수행하고자 할 때는 스레드를 사용할 수도 있고, init이 하는 것 처럼 한 프로그램안에서 개벌젹인 프로세스를 생성할 수 있다. 

- fork 함수를 호출하여 생성할 수 있다. 이 함수는 현재 프로세스를 복재해서 프로세스 테이블에 새로운 항목을 생성한다. (exec처럼 현재 프로세스를 다른 프로세스로 "대체"하는 것이 아니라) 새 프로세스는 현재 프로세스의 여러 특성들을 물려받는다. 새 프로세스는 원래의 프로세스와 동알한 코드를 수행한다. 그러나 자료공간 환경 파일 서술자들은 개별적이다. 


#include <sys/types.h>

#include <unistd.h>


pid_t fork(void);


복제를 실패하면 -1을 돌려준다.

부모가 가질 수 있는 자실 프로세스 개수의 한계를 넘거나, 프로세스 테이블이 꽉찼거나, 가상메모리가 부족하거나 할때 실패하고 errno에 ENOMEM이 설정된다.

예제 소스

실행 결과

첫 실행에서 부모 프로세스는 자식 프로세스를 생성한다. 부모 프로세스가 자신의 메시지를 세 번 반복해서 출력하는 반면, 자식프로세스는 메시지를 다섯번 출력한다. 실행 결과에슨 중간에 셸 프롬프트가 끼어있는데 이것은 자식 프로세스가 메시지를 모두 출력하기 전에 부모 프로세스가 끝났기 때문이다. 

반응형