Fork는 새로운 프로세스를 생성합니다. 새로 생성된 프로세스는 상위 프로세스의 후속 코드 복사본이며 일반적으로 하위 프로세스에서 독립적인 코드를 실행할 수도 있습니다.
getpid를 사용하여 현재 프로세스가 하위 프로세스인지 상위 프로세스인지 확인합니다.
다음 예를 고려하십시오.
인용된 내용은 다음과 같습니다.
#include <sys/types.h> #include <unistd.h> #include <stdio.h> 정수 메인() { pid_t pid; 정적 정수 n = 0; printf("포크!n"); 스위치(pid = 포크()) { 사례-1: { /* ..pid.-1.fork.... */ /* ....... */ /*..........*/ perror("포크가 실패했습니다!"); 부서지다; } 사례 0: { /* pid.0.... */ printf("[child]저는 어린이입니다!n"); printf("[child]getpid=[%d]n", getpid() ); printf("[child]pid=[%d]n", pid ); 부서지다; } 기본: { /* pid..0.... */ printf("[parent]저는 부모입니다!n" ); printf("[parent]getpid=[%d]n",getpid() ); printf("[부모]pid=[%d]n",pid ); 부서지다; } } printf("n=[%d]n", n++); 0을 반환합니다. } |
이 예제는 Linux에서 gcc로 컴파일되었으며 실행 결과는 다음과 같습니다.
인용된 내용은 다음과 같습니다.
포크! [아이]나는 아이야! [자녀]getpid=[7422] [하위]pid=[0] n=[0] [부모]나는 부모입니다! [부모]getpid=[7421] [상위]pid=[7422] n=[0] |