waitpid的小小试验,一天一个小程序.......

今天终于凉快了,今年的五一节只能一个人过,虽然少了浪漫,但是却多了一份守候

 

#include <sys/types.h>
#include <sys/wait.h>

#include <unistd.h>
#include <stdio.h>


int main(int argc, char *argv[])
{
 fprintf(stdout,"head ___\n");

 pid_t pid;
 pid = fork();// 创建一个进程
 
 if(pid < 0)//检查进程创建成功与否
 {
  perror("fork");
  return 0;
 }
 else if( 0 == pid)
 {
  fprintf(stdout,"son _____\n");
  sleep(1);//延时一段时间,看结果看得更清晰
  fprintf(stdout,"son is here \n");
  return 255; //return后面最大为255
 }
 else if( 0 < pid)
 {
 int  status =0;//设置一个状态
 int id ;
 id  = waitpid(-1,&status,WUNTRACED);//等待任何子进程,/子进程的结束状态,/如果子进程进入暂停执行情况则马上返回,但结束状态不予理会

 //id = waitpid(-1,&status,WNOHANG);//如果没有任何已经结束的子进程则马上返回,不予等待
 if(id <0)
 {
  perror("waitpid");
  return -1;
 }

 if(WIFEXITED(status))//如果正常返回则为非零值
 {

  fprintf(stdout,"prents is here%d    %d    %d \n",pid,id,WEXITSTATUS(status));//取得子进程退出返回的结束代码
 }
 }
 fprintf(stdout,"parent\n");
 return 0;
  
}