我想从运行红宝石耙脚本可执行文件,说foo.exe
产卵红宝石的过程,捕捉标准输出,标准错误,获得存在状态
我想从foo.exe
的STDOUT
和STDERR
输出直接写入控制台我正在运行rake任务。
当进程完成后,我想将退出代码捕获到一个变量中。我如何实现这一目标?
我一直在玩backticks
,process.spawn
,system
但我不能得到我想要的行为,只有部分
更新:我在Windows上,在一个标准的命令提示符,而不是在cygwin
我想从运行红宝石耙脚本可执行文件,说foo.exe
产卵红宝石的过程,捕捉标准输出,标准错误,获得存在状态
我想从foo.exe
的STDOUT
和STDERR
输出直接写入控制台我正在运行rake任务。
当进程完成后,我想将退出代码捕获到一个变量中。我如何实现这一目标?
我一直在玩backticks
,process.spawn
,system
但我不能得到我想要的行为,只有部分
更新:我在Windows上,在一个标准的命令提示符,而不是在cygwin
system
得到你想要的STDOUT
行为。它也返回true
为零退出代码,这可能是有用的。
$?
与有关最后system
呼叫信息填充,因此您可以检查的退出状态:
system 'foo.exe'
$?.exitstatus
我用这些东西的组合,Runner.execute_command
为例。
原来我没有需要STDERR,所以我不能验证这_does_处理它,但它适用于我的需要 –
反引号将得到stdout
捕获到生成的字符串
foo.exe
建议你运行的是Windows - 你有没有安装像Cygwin的东西吗?如果你unixy外壳的内部运行脚本,你可以这样做:
result = `foo.exe 2>&1`
status = $?.exitstatus
快速谷歌搜索说,这也应该在本地Windows工作外壳,但我不能对此进行测试assupmtion
对于'2>&1' +1,偷偷摸摸! –
“Kernel#system”未涵盖哪部分内容? –
我知道和openSSL一起工作的'Net-SSH'纯ruby库具有这样的功能 - 'channel'的'exec'方法返回'[stdout,stderr,exit_code,exit_signal]'的数组。也许你可以以某种方式使用它... – Ribtoks
也许你应该列出你的每个命令的问题? –