2011-01-07 65 views
0

我有一个ruby脚本,通过反引号执行另一个ruby脚本。就像这样:红宝石backtick'd代码退出136?

output = `#{name}/#{sccript} --list` 

在某些情况下(我在一个二进制包的编译时间运行这一点,并有相同的脚本运行的多个实例),这将失败。

输出为0 lenght和$?设置为136

任何想法会导致什么呢?

回答

7

Exit code 136位于129-255的范围内,表示由Unix信号终止的作业。

要找出哪个信号,减去128,并找到它的信号8:SIGFPE。一个可能的原因可能是C程序中整数除零。

1

反引号总是返回任何呼叫的标准输出将是,如果你只是想真的还是假的,使用的系统:

ruby-1.9.2-p0 :009 > \`echo "hello"\` 
=> "hello\n" 
ruby-1.9.2-p0 :010 > system("echo 'hello'") 
hello 
=> true 

所以,回答你的问题“136”是无论你的脚本返回

+2

你给出了一个关于文本输出的答案,但他报告说退出代码('$?`)是136. – 2011-01-07 16:16:16

+0

是的,无关。 – rasjani 2011-01-08 01:29:21