gpt4 book ai didi

c - 为什么 wait() 将状态设置为 255 而不是 fork 进程的 -1 退出状态?

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

我正在尝试从子进程返回一个整数值。

但是,如果我使用 exit(1)我得到 256作为 wait() 的输出.使用 exit(-1)给出 65280 .

有没有办法获取我从子进程发送的实际 int 值?

if(!(pid=fork()))
{
exit(1);
}
waitpid(pid,&status,0);
printf("%d",status);

编辑:使用exit(-1) (这是我真正想要的)我得到 255 作为 WEXITSTATUS(status) 的输出.它应该是未签名的吗?

最佳答案

你试过“man waitpid”吗?

从 waitpid() 调用返回的值是退出值的编码。有一组宏将提供原始退出值。或者,如果您不关心可移植性,您可以尝试将值右移 8 位。

代码的可移植版本是:

if(!(pid=fork()))
{
exit(1);
}
waitpid(pid,&status,0);
if (WIFEXITED(status)) {
printf("%d", WEXITSTATUS(status));
}

关于c - 为什么 wait() 将状态设置为 255 而不是 fork 进程的 -1 退出状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3659616/

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