【问题标题】:Why system doesn't return main's value?为什么系统不返回主值?
【发布时间】:2011-07-20 07:34:50
【问题描述】:
[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,为什么?

【问题讨论】:

  • 我不这么认为,它永远不会改变。
  • 即perl中系统命令的返回码。如果你打印 $?,你将得到与 2560 相同的值。

标签: perl system


【解决方案1】:

参见perldoc perlvar 中的$?

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

【讨论】:

    【解决方案2】:

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

    返回值是程序返回的退出状态 等电话。要获得实际的退出值,请右移八位(参见 下面)。

    确实:2560 &gt;&gt; 8 = 10

    【讨论】:

      猜你喜欢
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-02-10
      • 2014-04-21
      • 2014-01-23
      • 2019-10-11
      • 2020-10-20
      • 2021-05-01
      相关资源
      最近更新 更多