gpt4 book ai didi

c - 为什么这个exit函数在C语言的末尾加两个零?

转载 作者:太空狗 更新时间:2023-10-29 16:05:25 25 4
gpt4 key购买 nike

嘿,所以我用 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: %d\n",pid_child);
printf("ParentProcessID from Child: %d\n",ppid_child);
exit(0xAA);
}
else{
printf("ChildProcessID: %d\n",cpid);
wait(&status);
printf("Exit Status Child: %#X\n",status);
}

在最后应该输出的地方

Exit Status Child: 0XAA

它熄灭了

Exit Status Child: 0XAA00

如果有任何格式错误或遗忘,我深表歉意。这是我在这里的第一篇文章。提前致谢。

最佳答案

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

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

wait(&status);
if (WIFEXITED(status)) {
printf("Exit Status Child: %#X\n",WEXITSTATUS(status));
} else if (WIFSIGNALED(status)) {
printf("Child exited abnormally via signal %d\n", WTERMSIG(status));
} else {
printf("Something else happened\n");
}

关于c - 为什么这个exit函数在C语言的末尾加两个零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53383069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com