0
我知道每一個UNIX進程帶有三個開放資源,STDIN
,STDOUT
和STDERR
, 如果我打開一個文件,如:如何獲得所有打開的資源紅寶石進程打開
passwd = File.open('/etc/passwd')
puts passwd.fileno`
這些數資源會增加。有沒有什麼辦法讓紅寶石進程打開所有的資源呢?
我知道每一個UNIX進程帶有三個開放資源,STDIN
,STDOUT
和STDERR
, 如果我打開一個文件,如:如何獲得所有打開的資源紅寶石進程打開
passwd = File.open('/etc/passwd')
puts passwd.fileno`
這些數資源會增加。有沒有什麼辦法讓紅寶石進程打開所有的資源呢?
即使運行在Ruby中的外部進程通常不會打開不同IO
對象。同樣STDERR
,STDOUT
和STDIN
將共享,除非你明確地改變它們。要得到所有的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)>
# ]
很酷,這就是我想要的,謝謝你的幫助 – 2013-03-29 03:50:51