2013-03-26 85 views

回答

2

即使運行在Ruby中的外部進程通常不會打開不同IO對象。同樣STDERRSTDOUTSTDIN將共享,除非你明確地改變它們。要得到所有的IO s,你可以這樣做:

ObjectSpace.each_object(IO).to_a 
# => [ 
# #<IO:<STDERR>>, 
# #<IO:<STDOUT>>, 
# #<IO:<STDIN>>, 
# #<IO:fd 1>, 
# #<IO:fd 0>, 
# #<File:/usr/local/lib/ruby/2.0.0/irb/lc/error.rb (closed)> 
# ] 
+0

很酷,這就是我想要的,謝謝你的幫助 – 2013-03-29 03:50:51