gpt4 book ai didi

ruby - 如何从 ruby​​ Open3.popen3() 中检索退出状态?

转载 作者:数据小太阳 更新时间:2023-10-29 06:31:27 26 4
gpt4 key购买 nike

我似乎无法尝试检索从 ruby​​ 的 Open3.popen3() 方法启动的 shell 命令的退出状态。

这是我的代码:

require 'open3'
stdin, stdout, stderr = Open3.popen3('ls')

当我现在尝试访问 $? 时,它仍然是 nil

到底有没有可能检索退出状态?

注意事项:
- ls 不是我要在我的脚本中使用的命令。我只是用这个来举个例子。我的脚本有点复杂并且包含用户输入,这就是为什么我需要 Open3 的清理功能。
- 我也尝试过 popen3 的 block 变体,但也没有成功。

最佳答案

简洁的答案是使用open3的第4个参数:wait_thr

  • 获取是否指示任何错误:wait_thr.value.success?
  • 获取实际错误级别:wait_thr.value.exitstatus

示例:

Open3.popen3(command) do |stdin, stdout, stderr, wait_thr|
return_value = wait_thr.value
end
puts "Error level was: #{return_value.exitstatus}" unless return_value.success?

关于ruby - 如何从 ruby​​ Open3.popen3() 中检索退出状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15023944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com