加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么这个退出函数在C的末尾添加两个零?

发布时间:2020-12-16 09:22:18 所属栏目:百科 来源:网络整理
导读:嘿所以我在C中为大学做了一个程序,孩子应该以十六进制0xAA退出但是它最后还加了两个零?为什么这样做?我在监督什么吗? pid_t cpid;int status;cpid = fork();if (cpid==-1){ return -1;}else if(cpid==0){ pid_t pid_child = getpid(); pid_t ppid_child =
嘿所以我在C中为大学做了一个程序,孩子应该以十六进制0xAA退出但是它最后还加了两个零?为什么这样做?我在监督什么吗?

pid_t cpid;
int status;
cpid = fork();
if (cpid==-1){
    return -1;
}
else if(cpid==0){
    pid_t pid_child = getpid();
    pid_t ppid_child = getppid();
    printf("ChildProcessID from Child: %dn",pid_child);
    printf("ParentProcessID from Child: %dn",ppid_child);
    exit(0xAA);
}
else{
    printf("ChildProcessID: %dn",cpid);
    wait(&status);
    printf("Exit Status Child: %#Xn",status);
}

在它应该输出的最后

Exit Status Child: 0XAA

它推出了

Exit Status Child: 0XAA00

如果有任何错误格式或遗忘任何内容,我很抱歉.这是我在这里发表的第一篇文章.
提前致谢.

解决方法

当wait返回时,给定参数除了退出代码之外还包含其他信息.它还会告诉您进程是否正常终止.

您可以使用宏来提取相关部分:

wait(&status);
if (WIFEXITED(status)) {
    printf("Exit Status Child: %#Xn",WEXITSTATUS(status));
} else if (WIFSIGNALED(status)) {
    printf("Child exited abnormally via signal %dn",WTERMSIG(status));
} else {
    printf("Something else happenedn");
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读