linux进程开发之(八):多进程程序开发一
时间:2010-10-25 来源:andyluo324324
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h> int main(void)
{
pid_t child1,child2,child;
child1 = fork();//创建两个子进程
child2 =fork ();
if(child ==-1)//子进程1的出错处理
{
perror("child fork") ;
exit(1);
}
else if(child1==0)//在子进程1中调用execlp函数
{
printf("in child1:execute 'ls -l'\n");
if(execlp("ls","ls","-1",NULL)<0)
{
perror("child1 execlp");
}
}
if(child2==-1)////子进程2的出错处理
{
perror("child2 fork");
exit(1);
}
else if(child2==0)//在子进程2中使其睡眠5s,然后退出
{
printf("in child2:sleep for 5 seconds and then exit\n");
sleep(5);
exit(0);
}
else//在父进程中等待子进程2的退出
{
printf("in father process:\n");
do
{
child=waitpid(child2,NULL,WNOHANG);
if(child==0)
{
printf("the child2 process has not exited !\n");
sleep(1);
}
}
while(child==0);
if(child==child2)
{
printf("get child2\n");
}
else
{
printf("error occured !\n");
}
}
}
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h> int main(void)
{
pid_t child1,child2,child;
child1 = fork();//创建两个子进程
child2 =fork ();
if(child ==-1)//子进程1的出错处理
{
perror("child fork") ;
exit(1);
}
else if(child1==0)//在子进程1中调用execlp函数
{
printf("in child1:execute 'ls -l'\n");
if(execlp("ls","ls","-1",NULL)<0)
{
perror("child1 execlp");
}
}
if(child2==-1)////子进程2的出错处理
{
perror("child2 fork");
exit(1);
}
else if(child2==0)//在子进程2中使其睡眠5s,然后退出
{
printf("in child2:sleep for 5 seconds and then exit\n");
sleep(5);
exit(0);
}
else//在父进程中等待子进程2的退出
{
printf("in father process:\n");
do
{
child=waitpid(child2,NULL,WNOHANG);
if(child==0)
{
printf("the child2 process has not exited !\n");
sleep(1);
}
}
while(child==0);
if(child==child2)
{
printf("get child2\n");
}
else
{
printf("error occured !\n");
}
}
}
相关阅读 更多 +