请教fork后wait所得到的status
各位达人:
环境是EM64T
程序使用fork后, 在父进程用wait(int *status)来获得子进程的退出状态。
程序如下:
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdio.h>
int main()
{
int retval = -1;
if (fork() == 0) {
return 1;
} else {
wait(&retval);
printf("%dn", retval);
return retval;
}
}
以上打印到的结果并不是1,而是1*256=768
而当我在子进程返回-1时,打印的结果是255*256=65280
请问各位达人是怎么回事?
之前看过一些资料,程序的返回状态为0-255
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
多谢楼上的达人
man 2 wait
看看 WIFEXITED 等等相关的宏
但是结果显然不是那样
一个int 的数据为32位,现在低八位(0-7)都是0,而高16位也为0,只有8-15位为有效位
这个难道跟系统有关?
程序的返回状态为0-255
int retval
的低8位有效,高8位应该根据系统定义