Yeah that can be a problem, but luckily I'm not using any threads so
it seems to be working...

On 3/22/06, Shea Martin <null / void.0> wrote:
> Farrel Lifson wrote:
> > Just solved it. Just run Process.wait after the call to the IO.popen
> > and $? gets updated.
>
> This doesn't work in this case:
>
> #!/usr/bin/ruby
>
> Thread.new{
>    IO.popen('ls non_existant_dir').each_line{|l| puts l}
>    sleep 10
>    Process.wait
>    puts "exit status is #{$?}, should be non-zero"
> }
>
> sleep 5
>
> Thread.new{
>    IO.popen('dir').each_line{|l| puts l}
>    Process.wait
>    puts "exit status is #{$?}, should be 0"
> }
>
> sleep 15
>
> exit 0
>
>
> ~S
>
>