Fork()函数
1.所需头文件:
#include?
#include
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
2.#include
3.#include
4.#include
5.#include
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.}