system的返回值为什么总是乘以了256

bekars 2006-04-11 06:07:25
a.sh

#!/bin/sh

exit 2


a.c
int i;
i=system("./a.sh");
printf("%d", i);

为什么i是512不是2?
...全文
529 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
x86 2006-04-12
  • 打赏
  • 举报
回复
1、当status低7位=0时,表示正常退出,此时,status的高8位是return code
2、当status低7位=0x7f时,表示child结束,高8位是引起child结束的信号
3、当((status) & 0x7f) + 1) >> 1) > 0时,表示由信号引起结束,低7位表示信号
4、第8位(0x80)表示产生coredump

仅供参考
fierygnu 2006-04-12
  • 打赏
  • 举报
回复
对。
warabi 2006-04-12
  • 打赏
  • 举报
回复
好像得用宏处理一下。

printf("%d",WEXITSTATUS(i));

看一下帮助页:
man system
man 2 wait

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧