【发布时间】:2016-06-30 15:54:57
【问题描述】:
我在 Perl 脚本的很多地方都看到过这种情况:
system("binary");
$exit_code = ($? >> 8)
exit($exit_code)
我为什么要使用这个?有其他方法吗?
我在
system(binary)中调用了一些二进制文件,它是我在 C++ 中创建的,它做了一些事情,如果它失败了,它会给出assert。当我重新启动 Linux 机器时,正在运行的东西会失败,并且我的二进制文件会按预期生成assert。但是在我调用它的 Perl 端,它会抛出一个134错误代码,在134 >> 8之后变成0。最终它使我的失败操作成为成功(我不想要)。
【问题讨论】:
-
你为什么开始使用移位?它已经在那里了吗?你是从什么地方拿的吗?
-
您实际上观察到的值是 134?下面的答案表明这不应该发生。
-
@T.J.Crowder 看起来
$status没有设置... -
@TomFenech:我想知道
$?(在标题中)与$status(在代码中)的事情,但我不太了解(阅读:基本上什么) Perl... -
Sry 实际上是 $?不是 $status @T.J.Crowder