UNIX的进程终止状态小结

来源:互联网 发布:三菱变频器软件 编辑:程序博客网 时间:2024/05/18 00:32

在UNIX中的进程退出状态有三种,分别是

normal termination:一般在调用exit,_exit后,或别的进程kill它出现

abnormal termination:调用abort,出错时强制退出时出现

stopped;在进程接受到STOP信号时退出


先来说如何捕捉子进程的退出状态


其中WIFEXITED宏用来判断进程是否正常退出,WEXITSTATUS用于获取退出代码编号

WIFSIGNALED宏用于判断进程是否异常退出,WTERMSIG获取进程终止的异常信号编号

WIFSTOPPED宏用于判断stopped状态,WSTOPSIG取得使进程处于STOPPED的信号编号


下面是用于遍历这三个状态的测试函数


32行调用了raise函数主动产生了一个SIGSTOP,是子进程停止,与父进程使用

kill(pid,SIGSTOP);
的效果相同

34行的

waitpid(pid,&status,WUNTRACED)
WUNTRACED选项,是waitpid只返回处在停止状态并且没有被报告过的进程状态,WIFSTOPPED获取其状态

结果如下

normal termination, exit status = 7abnormal termination, signal number = 6 (core file generated)child stoopped, signalnumber 19

0 0
原创粉丝点击