nfork.c 创建5个子进程
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
int n=5;
int i=0;
for(i=0;i<5;i++){
pid=fork();
if(pid==0){
//son
printf("I am child,pid=%d,ppid=%d\n",getpid(),getppid());
break; //子进程退出循环的接口,否则不是创建5个进程而是2^5=32个
}else if(pid>0){
//father
printf("I am father,pid=%d,ppid=%d\n",getpid(),getppid());
}
}
while(1){
sleep(1);
}
return 0;
}
改进nfork.c 5个子进程按顺序退出
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
int n=5;
int i=0;
for(i=0;i<5;i++){
pid=fork();
if(pid==0){
//son
printf("I am child,pid=%d,ppid=%d\n",getpid(),getppid());
break; //子进程退出循环的接口,否则不是创建5个进程而是2^5=32个
}else if(pid>0){
//father
//printf("I am father,pid=%d,ppid=%d\n",getpid(),getppid());
}
}
sleep(i);
if(i<5){
printf("I am child,will exit,pid=%d,ppid=%d\n",getpid(),getppid());
}
else{
printf("I am father,pid=%d,ppid=%d\n",getpid(),getppid());
}
return 0;
}