Linux進程 Fork函數

Fork()函數

1.所需頭文件:

#include <unistd.h>

#include<sys/types.h>

2.函數定義

pid_t fork( void );

pid_t 是一個宏定義,其實質是int 被定義在#include<sys/types.h>中

返回值: 若成功調用一次則返回兩個值,子進程返回0,父進程返回子進程ID;

        否則,出錯返回-1

3.函數說明:

 一個現有進程可以調用fork函數創建一個新進程。由fork創建的新進程被稱爲子進程(child process)。fork函數被調用一次但返回兩次。兩次返回的唯一區別是子進程中返回0值而父進程中返回子進程ID。

子進程是父進程的副本,它將獲得父進程數據空間、堆、棧等資源的副本。父子進程間共享的存儲空間只有代碼段。

 

 4.代碼

 

  1. #include<sys/types.h> 
  2. #include<unistd.h> 
  3. #include<stdio.h> 
  4. #include<stdlib.h> 
  5. #include<errno.h> 
  6.  
  7. int main() 
  8.    
  9.   pid_t pid;/*pid 進程id號*/ 
  10.    
  11.   pid=fork();/*創建一個新進程*/ 
  12.  
  13.   if(pid==0) /*返回0爲子進程*/ 
  14.   { 
  15.    printf("Return pid is %d\n",pid); 
  16.    printf("This is son process!  pid is:%d\n",getpid()); 
  17.       
  18.   } 
  19.   else if(pid>0)/*返回大於0爲父進程*/ 
  20.   { 
  21.     printf("Return pid is %d\n",pid); 
  22.     printf("This is parent process!  pid is:%d\n",getpid()); 
  23.      waitpid(pid,NULL,0);/*等待子進程退出*/
  24.   } 
  25.   else 
  26.   { 
  27.      perror("fork() error!"); 
  28.      exit; 
  29.   } 

 5.輸出


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章