Linux怎么创建五个子进程!!!
在父进程中调用fork()之后会产生两种结果:一种为分裂子进程失败,另一种就是分裂子进程成功。如果fork()失败,则返回-1,;否则会出现父进程和子进程两个进程,在子进程中fork()返回0,在父进程中fork()返回子进程的ID。
fork的时候发生什么?
①执行到这一句的时候,一个进程被创建了,这个进程与父进程一样,拥有一套与父进程相同的变量,相同的一套代码,这里可以粗浅的理解为子进程又复制了一份main函数。这里返回一个子进程的进程号,大于0。(第一次fork)
②子进程怎么执行:
子进程从fork()的位置开始执行,也就是说前面的代码不走,但是拥有之前的变量以及变量的值,与父进程的值一样,这次fork(),返回值是0,所以在子进程里面直接执行了pid==0这一个分支,父进程里面并不执行这个分支的语句。这就为我们在写mian函数的时候怎么写子进程的程序提供了一个方法来隔离代码。
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
int i;
pid_t pid;
for(i = 0; i < 5; i++)
{
pid = fork();
if(pid == 0)
{
break;
}
}
if(i < 5)
{
printf("I'm %d child,pid = %u\n",i+1,getpid());
}
else
{
printf("I'm parent\n");
}
return 0;
}