/dev/fd/について質問。

こんにちは、unix関連になるかもしれませんが、/dev/fd/について質問です。

/dev/fd/は

/dev/fd /proc/self/fd symbolic ファイルディスクリプタ群

/dev/stdin fd/0 symbolic stdinファイルディスクリプタ

/dev/stdout fd/1 symbolic stdoutファイルディスクリプタ

/dev/stderr fd/2 symbolic stderrファイルディスクリプタ

ということで0はstdin 1はstdout 2はstderrということはわかったのですが、

3からは何を意味するのでしょうか?


$ sudo ls -la /dev/fd/ を実行すると

crw--w---- 1 username tty 16, 0 1 24 01:00 0

crw--w---- 1 username tty 16, 0 1 24 01:00 1

crw--w---- 1 username tty 16, 0 1 24 01:00 2

drw-r--r-- 140 username staff 4760 1 24 01:00 3

dr--r--r-- 1 root wheel 0 1 24 00:46 4


$ sudo ls -la /dev/fd/* を実行すると

ls: /dev/fd/10: Bad file descriptor

ls: /dev/fd/3: Bad file descriptor

crw--w---- 1 username tty 16, 0 1 24 01:18 /dev/fd/0

crw--w---- 1 username tty 16, 0 1 24 01:18 /dev/fd/1

crw--w---- 1 username tty 16, 0 1 24 01:18 /dev/fd/2

という結果が出力されました。時によっては5が出現したり12があったりするのですが、これは一体何なのでしょうか?


というのも2日前にSSDドライブが1〜2ギガ程度なぜか勝手に減る現象が起こってしまい、気持ち悪くなったのでその時

sudo find / -type f -mmin -30 -size +100000k

をしてみると

find: /dev/fd/3: Not a directory

find: /dev/fd/4: Not a directory

/System/Library/Caches/com.apple.coresymbolicationd/data

が出力されました。

原因は恐らくcoresymbolicationd/dataの1.7G程度のファイルだったようです。(なぜ増えたかわかりません。)

シングルモードで削除するか、/tmpにmvさせて再起動するかで削除できるようですので削除しました。

その時directoryじゃないfd/3とfd/4は何なのかが疑問になりました。

是非デバイス関連に詳しい人に知識として教えてほしいです。よろしくお願いします。

MacBook Air (11-inch Mid 2012), OS X Yosemite (10.10.1)

投稿日 2015/01/23 09:14

返信
返信: 2

2015/01/23 18:00 mu-h への返信

> 0はstdin 1はstdout 2はstderrということはわかったのですが、

> 3からは何を意味するのでしょうか?


fileをオープンすれば、必ず番号で指定されるファイルデスクリプターが出来ます。0-2はログインすれば自動的にOSが用意するものです(unixではコンソールへの読み書きもファイルとして扱われます)。それ以上のは、ファイルを読み書きするプロセスごとに自動的に出来たり消えたりします(通常は1024個までかな?プロキシソフトを動かす場合には、これではとても足りないので、もっと増やします。起動時カーネルパラメータで指定出来ます)。なので、こういうものをユーザが勝手にいじってはいけません(ディスクが壊れる原因になります)。

2015/01/24 00:53 はに への返信

返信ありがとうございます。

質問があるのですが、これらファイルデスクプリタはどのようにして何を出力か読込か調べる手段はありますか?

/dev/fd/3 /dev/fd/4は何を読み込んでいるのか推測できますでしょうか?

上記で記述したように、

$ sudo ls -la /dev/fd/ をすると

3は

drw-r--r-- 140 username staff 4760 1 24 01:00 3

4は

dr--r--r-- 1 root wheel 0 1 24 00:46 4

と不思議なことに3と4は両方共ディレクトリとして認識しています。これはなぜでしょうか?


また

$ sudo ls -la /dev/fd/* をすると

3は

ls: /dev/fd/3: Bad file descriptor (もしかして壊れてる?)

4は認識できていません。

ls: /dev/fd/10: Bad file descriptor

10のデスクプリタが出現し3と同じ状態。


話は戻りますが、これらのファイルデスクリプタをlogや何かの情報で詳細に調べる方法はありますでしょうか?

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

/dev/fd/について質問。

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。