linux 进程退出码,Linux 进程退出码

Linux 进程退出码

2018-11-04 Sunday

Linux 下进程的退出包括了正常退出和异常退出,正常退出包括了 A) main() 函数中通过 return 返回;B) 调用 exit() 或者 _exit() 退出。异常退出包括了 A) abort() 函数;B) 收到了信号退出。

不管是哪种退出方式,系统最终都会执行内核中的同一代码,并将进程的退出方式以返回码的方式保存下来。

简介

当进程正常或异常终止时,内核就向其父进程发送 SIGCHLD 信号,对于 wait() 以及 waitpid() 进程可能会出现如下场景:

如果其所有子进程都在运行则阻塞;

如果某个子进程已经停止,则获取该子进程的退出状态并立即返回;

如果没有任何子进程,则立即出错返回。

如果进程由于接收到 SIGCHLD 信号而调用 wait,则一般会立即返回;但是,如果在任意时刻调用 wait 则进程可能会阻塞。

等待子进程退出

父进程可以通过 wait() 或者 waitpid() 获取子进程的状态码,详细可以通过 man 3 wait 查看,其声明如下。

如果下面参数中的 status 不是 NULL,那么会把子进程退出时的状态返回,该返回值保存了是否为正常退出、正常结束的返回值、被那个信号终止等。

#include

pid_t wait(int *status);

pit_t waitpid(pid_t pid, int *status, int options);

当要等待一特定进程退出时,可调用 waitpid() 函数,其中第一

你可能感兴趣的:(linux,进程退出码)