Fork創建一個新的進程,新創建的進程是子進程,它是對父進程以後代碼的一個複製,通常用來做多進程的伺服器,也可以在子進程中運行獨立的代碼。
用getpid可以判斷目前是子行程還是父行程。
看下面這個例子:
以下為引用的內容:
#include <sys/types.h> #include <unistd.h> #include <stdio.h> int main() { pid_t pid; static int n = 0; printf("fork!n"); switch (pid = fork()) { case -1: { /* ..pid.-1.fork.... */ /* ........ */ /* .......... */ perror("The fork failed!"); break; } case 0: { /* pid.0.... */ printf("[child]i am child!n"); printf("[child]getpid=[%d]n", getpid() ); printf("[child]pid=[%d]n", pid ); break; } default: { /* pid..0.... */ printf("[parent]i am parent!n" ); printf("[parent]getpid=[%d]n",getpid() ); printf("[parent]pid=[%d]n",pid ); break; } } printf("n=[%d]n", n++); return 0; } |
這個例子在linux下用gcc編譯,運行結果如下:
以下為引用的內容:
fork! [child]i am child! [child]getpid=[7422] [child]pid=[0] n=[0] [parent]i am parent! [parent]getpid=[7421] [parent]pid=[7422] n=[0] |