STDIN
すべての UNIX プロセスには、STDOUT
およびの3 つのオープン リソースが付属していることを知ってSTDERR
います。次のようなファイルを開くと、
passwd = File.open('/etc/passwd')
puts passwd.fileno`
これらのリソースの数は増加します。Rubyプロセスが開くすべてのリソースを取得する方法はありますか?
STDIN
すべての UNIX プロセスには、STDOUT
およびの3 つのオープン リソースが付属していることを知ってSTDERR
います。次のようなファイルを開くと、
passwd = File.open('/etc/passwd')
puts passwd.fileno`
これらのリソースの数は増加します。Rubyプロセスが開くすべてのリソースを取得する方法はありますか?
IO
通常、Ruby 内で外部プロセスを実行しても、別のオブジェクトが開かれることはありません。明示的に変更しない限り、同じ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)>
# ]