【发布时间】:2016-03-05 14:18:47
【问题描述】:
我有代码:
Process.spawn(RbConfig.ruby, "a ruby file", "arg")
我等待并通过以下方式检查其状态:
Process.wait
$?.success?
大多数时候,它运作良好。但有时,$?.success? 是 false,$?.to_i 是 0x0100。在返回0x0100 之前,失败的进程似乎没有机会运行任何代码(我没有向进程发送任何信号)。我想知道0x0100 的含义。我还想知道当命令没问题时 Ruby 的 spawn 是否会失败。有人可以帮忙吗?
【问题讨论】:
-
我不知道这个上下文的具体含义,但是那个数据结构(
0x0000)是一个十六进制掩码。每个数字是一个从 0 到 15 的数字(其中 10 到 15 由字母 A 到 F 表示)。 0x0100 是数字 256。 -
$?.inspect告诉你什么?另外,$?.to_s -
正常运行代码会执行吗?或者通过使用 ruby 在命令行上运行它?
-
我以同样的方式运行代码。大多数时候它运作良好。但偶尔会失败。我强烈怀疑它与内存不足有关,因此 Ruby 无法生成进程,并且 Ruby 或 Linux 在 spawn 返回时不会立即返回失败,并且在您等待并检查代码后返回此类失败(即 Ruby 中的 Process::Status)。
-
Ruby 文档说这些值取决于平台 - 一些细节在这里:stackoverflow.com/questions/1101957/… - 不一定是您问题的答案
标签: ruby process standard-library