我正在尝试从子进程返回一个整数值.
但是,如果我使用exit(1)我得到256作为输出.exit(-1)给出65280.
有没有办法可以获得我从子进程发送的实际int值?
if(!(pid=fork()))
{
exit(1);
}
waitpid(pid,&status,0);
printf("%d",status);
Run Code Online (Sandbox Code Playgroud)
编辑:使用exit(-1)(这是我真正想要的)我得到255作为WEXITSTATUS(状态)的输出.它应该是未签名的吗?
Dar*_*ron 18
你试过"man waitpid"吗?
waitpid()调用返回的值是退出值的编码.有一组宏将提供原始退出值.或者,如果您不关心可移植性,可以尝试将值右移8位.
您的代码的可移植版本将是:
if(!(pid=fork()))
{
exit(1);
}
waitpid(pid,&status,0);
if (WIFEXITED(status)) {
printf("%d", WEXITSTATUS(status));
}
Run Code Online (Sandbox Code Playgroud)