linux中,可以使用fork函数创建和当前进程一模一样的进程,叫子进程,原来的进程叫父进程
- 函数原型
pid_t fork(void);– 参数:无
– 返回值:执行成功,子进程pid 返回给父进程,0 返回给子进程;出现错误-1,返回给父进程。执行失败的唯一情况是内存不够或者id 号用尽, 不过这种情况几乎很少发生。
例程
#include <stdio.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
if(pid == -1)
{
printf("fork error!");
}
if(pid)
{
printf("I'm father\n");
printf("father:fork num:%d ,pid is %d, ppid is %d\n",pid,getpid(),getppid());
}
else
{
printf("I'm child\n");
printf("child:fork num:%d ,pid is %d, ppid is %d\n",pid,getpid(),getppid());
}
return 0;
}
开发板上运行
分析
- 成功执行fork() 后,会再复制一个程序。
- 原来的程序执行完 fork后,会返回 另一个程序的 进程号。
- 另一个程序再次执行 fork,返回0。
- 原来程序的 父进程 和 新程序的 父进程号 不一样。