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