linux进程开发之(八):多进程程序开发一

758阅读 1评论2010-10-25 andyluo324324
分类:LINUX

#include
#include
#include
#include
#include
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"); 
  }
   
 }
 
}
上一篇:linux进程开发之(七):守护进程出错判断
下一篇:linux进程开发之(九):多进程开发二

文章评论