Ruby, Threads and Exit Codes

2008-05-06

A question for you Ruby nerds: the $? variable gives access to the exit code for the last process launched by Ruby. Is referencing $? a race condition in a system with many threads launching many subprocesses? If it is truly a global variable, then it’s inherently unsafe, but it could also be implemented with a thread-local variable. Any idea which it is?

``

      output = `#{command}`
      if $? != 0 # Race condition?
        raise output
      end

``