我想从 ruby rake 脚本运行一个可执行文件,比如说foo.exe
我希望STDOUT
和STDERR
输出foo.exe
直接写入我正在运行 rake 任务的控制台。
当该过程完成时,我想将退出代码捕获到一个变量中。我如何实现这一目标?
我一直在玩backticks
, process.spawn
,system
但我无法获得我想要的所有行为,只有部分
更新:我在 Windows 上,在标准命令提示符下,而不是 cygwin
我想从 ruby rake 脚本运行一个可执行文件,比如说foo.exe
我希望STDOUT
和STDERR
输出foo.exe
直接写入我正在运行 rake 任务的控制台。
当该过程完成时,我想将退出代码捕获到一个变量中。我如何实现这一目标?
我一直在玩backticks
, process.spawn
,system
但我无法获得我想要的所有行为,只有部分
更新:我在 Windows 上,在标准命令提示符下,而不是 cygwin
system
得到STDOUT
你想要的行为。它还返回true
一个可能有用的零退出代码。
$?
填充了有关上次system
调用的信息,因此您可以检查退出状态:
system 'foo.exe'
$?.exitstatus
我以这些东西的组合Runner.execute_command
为例。
反引号将被stdout
捕获到结果字符串中
foo.exe
建议您正在运行 Windows - 您是否安装了 cygwin 之类的东西?如果你在 unixy shell 中运行你的脚本,你可以这样做:
result = `foo.exe 2>&1`
status = $?.exitstatus
快速谷歌搜索说这也应该在本机 Windows shell 中工作,但我无法测试这个假设