什么是fork函数
fork函数是在进程中执行复制的一种函数,会在原本进行的程序中复制并创建出一个新进程,称之为子进程,原进程称为父进程,然后两者进程共存并一起执行。
什么是PID
PID是进程号,用来标识进程,一个进程号只能标识一个进程,且是唯一的。
如何通过PID观察fork函数
通过fork的返回值可以判断进程,如果出现错误,fork返回值为负值,如果在父进程中,fork的返回值为子进程的PID,如果在子进程中,fork的返回值为0。
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
pid_t pid = fork();//创建子进程
if(-1 == pid)
{
perror("fork");
return -1;
}
if(0 == pid)//子进程
{
printf("Child process pid:%d My parent process pid:%d\n",getpid(),getppid());
exit(0);//进程退出函数
}
else if(pid > 0)//父进程
{
//sleep(1);
wait(NULL);//阻塞等待任意子进程结束并回收进程产生的资源 同时接收exit/_exit的退出状态值
printf("parent pid:%d My parent process pid:%d\n",getpid(),getppid());
exit(0);
}
return 0;
}