歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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. 
10.  pid_t pid;/*pid 進程id號*/
11. 
12.  pid=fork();/*創建一個新進程*/
13.
14.  if(pid==0) /*返回0為子進程*/
15.  {
16.  printf("Return pid is %d\n",pid);
17.  printf("This is son process!  pid is:%d\n",getpid());
18.     
19.  }
20.  else if(pid>0)/*返回大於0為父進程*/
21.  {
22.    printf("Return pid is %d\n",pid);
23.    printf("This is parent process!  pid is:%d\n",getpid());
24.    waitpid(pid,NULL,0);/*等待子進程退出*/
25.  }
26.  else
27.  {
28.    perror("fork() error!");
29.    exit;
30.  }
31.}

Copyright © Linux教程網 All Rights Reserved