ork()函数原型:pid_t fork(void);
需要引入的头文件:<unistd.h>
功能:
①fork函数通过系统调用创建一个与原来进程几乎完全相同的进程,并且两个新的进程将并发执行。
②若fork函数成功调用,一次会返回两个值,子进程返回0,父进程返回子进程ID(pid),若fork函数调用失败,返回-1
相关函数:
(1)getpid
函数原型:pid_t getpid(void)
功能:返回当前进程的PID
(2)getppid
函数原型:pid_t getppid(void)
功能:返回父进程的标识
fork函数一次调用示例
#include<stdio.h>
#include<unistd.h>
int main()
{
pid_t pid=fork();//创建子进程
//如果创建子进程失败,pid的返回值小于0,子进程创建出现错误
//如果创建子进程成功,pid返回值有两个,子进程返回0,父进程返回子进程ID
if(pid<0)
{
printf("创建子进程失败!\n");
}
if(pid==0)
{
printf("这个是执行子进程的输出结果,pid=%d\n",getpid());
}
else
{
printf("这个是执行父进程的输出结果,pid=%d\n",getpid());
printf("父进程创建的子进程的pid为,pid=%d\n",pid);
}
}
运行结果
我们可以看出if语句中的两个条件本来只能是满足哪个输出哪个,但是这一次两个if语句中的内容都输出了,说明有两次返回值,分别满足两个if的条件