소프트웨어/C/C++
c] 프로세스 복제 fork
cs만두
2014. 5. 31. 17:27
리눅스기준.
fork는 현재 실행중인 process를 복제한다. fork가 걸린 순간 프로세스가 분기(맞는 표현인가?)하기 때문에 context가 복제된 process가 생긴다.
소스
#include#include #include int main(int argc, char **argv) { int pid; pid = fork(); //fork로 프로세스 복사 if(pid>0) { //PID가 0보다 크면 부모 printf("parents, pid=%d\n",pid); getchar(); //자식생겨고 엔터쳐야 끝나게 걸어놓은것 }else if(pid==0) { //PID가 0과 같으면 자식 프로세스 printf("children\n"); }else if(pid==-1) { //PID가 -1이면 fork err perror("fork err : "); } return 0; }
위의 소스에서 보면 fork() 함수가 걸린 순간 process 복제가 일어난다. 우선 진행중이던 부모는 pid가 0보다 크기 때문에 parents를 출력한다. 그리고 그 후 복제된 프로세스는 pid가 0이기 때문에 children을 출력한다.
즉,
int fork()가
0보다 크다 => 부모
0이다 => 복제된 자식
-1이다 => fork 실패
출력은 아래와 같다.