/* * 3-8.c * * Created on: 2011-1-7 * Author: jinyong * 非阻塞式终止子进程 */ #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main(void) { pid_t result,status; int i=1; result = fork(); if(result < 0) { perror("进程复制失败"); }else if(result == 0) //子进程 { printf("这是子进程,进程号是:%d/n",getpid()); sleep(10); //子进程进入睡眠 exit(0); }else{ do{ status = waitpid(result,NULL, WNOHANG); //WNOHANG:如果没有任何已终止的子进程则马上返回,不予等待。 if(status == 0)//若返回子进程号为0,则说明无子进程终止。 { printf("the child process not exists/n"); sleep(1); } }while(status == 0); if(result == status)//如果终止的子进程号等于result进程号,则说明子进程已终止。 { printf("get child exit code:%d/n",status); }else { printf("some error occured./n"); } } }