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.代碼
- #include<sys/types.h>
- #include<unistd.h>
- #include<stdio.h>
- #include<stdlib.h>
- #include<errno.h>
- int main()
- {
- pid_t pid;/*pid 進程id號*/
- pid=fork();/*創建一個新進程*/
- if(pid==0) /*返回0爲子進程*/
- {
- printf("Return pid is %d\n",pid);
- printf("This is son process! pid is:%d\n",getpid());
- }
- else if(pid>0)/*返回大於0爲父進程*/
- {
- printf("Return pid is %d\n",pid);
- printf("This is parent process! pid is:%d\n",getpid());
- waitpid(pid,NULL,0);/*等待子進程退出*/
- }
- else
- {
- perror("fork() error!");
- exit;
- }
- }
5.輸出