当前位置: 技术问答>linux和unix
system的返回值为什么总是乘以了256
来源: 互联网 发布时间:2015-11-20
本文导语: a.sh #!/bin/sh exit 2 a.c int i; i=system("./a.sh"); printf("%d", i); 为什么i是512不是2? | 1、当status低7位=0时,表示正常退出,此时,status的高8位是return code 2、当status低7位=0x7f时,表示child结束,高8...
a.sh
#!/bin/sh
exit 2
a.c
int i;
i=system("./a.sh");
printf("%d", i);
为什么i是512不是2?
#!/bin/sh
exit 2
a.c
int i;
i=system("./a.sh");
printf("%d", i);
为什么i是512不是2?
|
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
仅供参考
2、当status低7位=0x7f时,表示child结束,高8位是引起child结束的信号
3、当((status) & 0x7f) + 1) >> 1) > 0时,表示由信号引起结束,低7位表示信号
4、第8位(0x80)表示产生coredump
仅供参考
|
好像得用宏处理一下。
printf("%d",WEXITSTATUS(i));
看一下帮助页:
man system
man 2 wait
printf("%d",WEXITSTATUS(i));
看一下帮助页:
man system
man 2 wait
|
对。