From: get.codetriage@... Date: 2021-05-19T18:10:48+00:00 Subject: [ruby-core:103893] [Ruby master Bug#1287] $? not set after Open3::popen3 Issue #1287 has been updated by schneems (Richard Schneeman). FWIW the work around is to capture the status and re-exec with an exit. It works, but the downside is that shell invocations are not cheap: ``` ruby irb(main):042:0> a, b, c = Open3.capture3("ls /does/not/exist") irb(main):043:0> `exit #{c.exitstatus}` => "" irb(main):044:0> $? => # ``` ---------------------------------------- Bug #1287: $? not set after Open3::popen3 https://bugs.ruby-lang.org/issues/1287#change-92017 * Author: phasis68 (Heesob Park) * Status: Rejected * Priority: Normal * Target version: 1.9.1 * ruby -v: ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux] ---------------------------------------- =begin $? is not set after popen3 in 1.9.1 Try following code: require 'open3' status = Open3::popen3("echo hello") do |stdin,stdout,stderr| stdout.each { |line| puts "stdout:"+line } end p $? [sidns@ns ~]$ ruby -v po.rb ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-linux] stdout:hello # [siweb@localhost ~]$ ruby -v po.rb ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux] stdout:hello nil =end -- https://bugs.ruby-lang.org/ Unsubscribe: