栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Linux中是否有任何标准的退出状态代码?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux中是否有任何标准的退出状态代码?

wait(2)
&co返回时,将8位返回码和8位终止信号编号混合为一个值。。

#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>#include <signal.h>int main() {    int status;    pid_t child = fork();    if (child <= 0)        exit(42);    waitpid(child, &status, 0);    if (WIFEXITED(status))        printf("first child exited with %un", WEXITSTATUS(status));        child = fork();    if (child <= 0)        kill(getpid(), SIGSEGV);    waitpid(child, &status, 0);    if (WIFSIGNALED(status))        printf("second child died with %un", WTERMSIG(status));    }

您如何确定退出状态?传统上,外壳程序仅存储8位返回码,但如果进程异常终止,则将高位设置为高位。

$ sh -c'出口42'; 回声$?42$ sh -c'kill -SEGV $$'; 回声$?分段故障139$ expr 139-12811

如果您看到的不是这个,则程序可能有一个

SIGSEGV
信号处理程序,该信号处理程序随后
exit
会正常调用,因此实际上并没有被信号杀死。(程序可以选择处理
SIGKILL
和以外的任何信号
SIGSTOP
。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号