我似乎试图检索从
ruby的Open3.popen3() – 方法启动的shell命令的退出状态.
这是我的代码:
require 'open3' stdin,stdout,stderr = Open3.popen3('ls')
当我现在尝试访问$?它仍然是零
是否可以检索退出状态?
笔记:
– ls不是我在我的脚本中使用的命令.我只是用这个举个例子.我的脚本有点复杂,包含用户输入,这就是为什么我需要Open3的消毒功能.
– 我也尝试过popen3的块变体,但是没有成功.
解决方法
popen3生成/返回四个参数,stdin,stderr和wait_thr. wait_thr包含一个方法wait_thr.value,它返回命令的退出状态(实际上,它是根据文档的Process :: Status对象).还有看看
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/open3/rdoc/Open3.html#method-c-popen3