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;
}