5

我想从 ruby​​ rake 脚本运行一个可执行文件,比如说foo.exe

我希望STDOUTSTDERR输出foo.exe直接写入我正在运行 rake 任务的控制台。

当该过程完成时,我想将退出代码捕获到一个变量中。我如何实现这一目标?

我一直在玩backticks, process.spawnsystem但我无法获得我想要的所有行为,只有部分

更新:我在 Windows 上,在标准命令提示符下,而不是 cygwin

4

2 回答 2

8

system得到STDOUT你想要的行为。它还返回true一个可能有用的零退出代码。

$?填充了有关上次system调用的信息,因此您可以检查退出状态:

system 'foo.exe'
$?.exitstatus

我以这些东西的组合Runner.execute_command为例。

于 2012-06-15T12:24:34.643 回答
2

反引号将被stdout捕获到结果字符串中

foo.exe建议您正在运行 Windows - 您是否安装了 cygwin 之类的东西?如果你在 unixy shell 中运行你的脚本,你可以这样做:

result = `foo.exe 2>&1`
status = $?.exitstatus

快速谷歌搜索说这也应该在本机 Windows shell 中工作,但我无法测试这个假设

于 2012-06-15T12:20:24.120 回答