by shigemk2

当面は技術的なことしか書かない

「すべてがファイルであるという哲学」

開かれたファイルはファイルディスクリプタといい、
Unixの世界では「すべてがファイルである」という哲学を持つ。

ファイルディスクリプタは、プロセスとともに生き、プロセスと共に死ぬ運命にある。
また、プロセス中に開いたリソースには固有の番号が与えられ、カーネルは
この番号を使ってプロセスが使用しているソースを追跡する。

>> passwd = File.open('/etc/passwd')
=> #<File:/etc/passwd>
>> puts passwd.fileno
3
=> nil
>> hosts = File.open('/etc/hosts')
=> #<File:/etc/hosts>
>> puts hosts.fileno
4
=> nil
>> passwd.close
=> nil
>> puts passwd.fileno
IOError: closed stream
	from (irb):18:in `fileno'
	from (irb):18

だからなんというか、死んでしまったプロセスを追うことは出来ない。


http://tatsu-zine.com/books/naruhounix