APUE之初識fork()

    fork()函數能夠讓進程拷貝出一個幾乎與其如出一轍的子進程出來,fork函數調用一次卻會返回兩次:併發

一次在父進程,一次在子進程。它的返回值取決於當前進程,若是是子進程則返回0,父進程則返回子進程PID。函數

通常來講父子進程有以下特色:spa

1 父進程與子進程是併發執行;code

2 相同可是相對獨立的地址空間;blog

3 共享文件IO。進程

一段簡單的代碼以下所示:get

 1 #include<unistd.h>
 2 #include<stdio.h>
 3 
 4 int main()
 5 {
 6     // int i=0;
 7     pid_t fpid;
 8     fpid=fork();
 9     if(fpid<0)
10     {
11          printf("error in fork()\n");    
12     }
13         else if(fpid==0)
14     {
15      printf("pid==%d\n",getpid());
16      printf("fpid=0\n");
17     }
18     else if(fpid>0)
19     {
20                  
21      printf("pid==%d\n",getpid());
22      printf("fpid!=0\n");
23     }
24 
25       return 0;
26 }

編譯執行後結果:io

1 $:~/sb/codetest$ ./a.out
2 fpid=7262
3 pid==7261
4 fpid!=0

5 fpid=0 6 pid==7262 7 fpid=0
相關文章
相關標籤/搜索