리눅스기준.
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 실패
출력은 아래와 같다.
'소프트웨어 > C/C++' 카테고리의 다른 글
C/C++] DLL 만들기 및 적용(dll export, dll import) (3) | 2017.02.23 |
---|---|
cpp] thread 만들기 (0) | 2014.05.26 |
c] data영역과 text영역 (1) | 2014.04.06 |
c] 문자열에서 char 찾기. strchr (0) | 2014.04.06 |
c/c++] CPP에서 strtok사용하기_ string객체를 char*로 변환 (0) | 2013.10.18 |
c/c++] 객체 배열 동적생성시 메모리반환 (0) | 2013.10.11 |
c/c++] Header와 소스코드분리 (0) | 2013.10.04 |