linux下wait函数,Linux wait函数详解

wait和waitpid出现的原因

SIGCHLD

--当子进程退出的时候,内核会向父进程SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止)

--子进程退出时,内核将子进程置为僵尸状态,这个进程成为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态

--父进程查询子进程的退出状态可以用wait/waitpid函数

wait获取staus后检测处理

宏定义 描述

WIFEXITED(status) 如果进程子进程正常结束,返回一个非零值

WEXITSTATUS(status) 如果WIFEXITED非零,返回子进程退出码

WIFSIGNALED(status) 子进程因为捕获信号而终止,返回非零值

WTERMSIG(status) 如果WIFSIGNALED非零,返回信号代码

WIFSTOPPED(status) 如果进程被暂停,返回一个非零值

WSTOPSIG(status) 如果WIFSTOPPED非零,返回信号代码

#include

#include

#include

#include

#include

#include

#include

int main(int arg,char *args[])

{

pid_t pid=fork();

if(pid==-)

{

printf("fork() failed ! error message:%s\n"

你可能感兴趣的:(linux下wait函数)