为什么系统不返回main的值?

时间:2011-07-20 07:34:50

标签: perl system

[root@ test]$ cat return10.c
#include <stdio.h>
int main(int argc, char *argv[]){
    return 10;
}
[root@ test]$ perl -e 'print system("/path_to_return10")'
2560

我期待 10 2560 ,为什么?

2 个答案:

答案 0 :(得分:6)

在perl(http://perldoc.perl.org/functions/system.htmlsystem调用的文档中指定:

  

返回值是由程序返回的程序的退出状态   等电话。要获得实际退出值,请向右移动8(请参阅   下文)。

确实:2560 >> 8 = 10

答案 1 :(得分:6)

请参阅perldoc perlvar中的$?

你有10 * 256(返回值= 10)+ 0 * 128(没有核心转储)+ 0(进程没有被信号杀死)。