/ dev / nullファイルのサイズは実際には固定ですか?


23

/dev/nullディレクトリでなくファイルであることを発見しました。

実際のファイルサイズがあるのか​​と思っています。

回答:


35

/dev/null実際にはファイルではありません。それはだキャラクタデバイス

$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Apr 10 09:53 /dev/null

c許可文字列の最初の文字(crw-rw-rw-)はこれを示しています。通常のファイルの場合は、-代わりになります。

簡単に言うと/dev/null、ファイルではなく、ファイルシステム内のこのパスにマップされた仮想デバイスであり、ブラックホールのようにデータを飲み込んで消滅させる唯一の目的があります。
入力としても使用できますが、空のファイル(サイズ0)のように動作し、すぐにEOF(ファイルの終わり)を返します。

したがって、それ/dev/nullは特定のファイルサイズを持っていると言うことはできません、それはどんな記憶媒体上の通常のファイルでもないからです。


入力?NUL文字の無限のリストを提供するものは何ですか?
ジョナサン

@JonathonWisnoski正確にはわかりませんし、このように使用したこともないので、StackOverflowの質問へのリンクを説明します。
バイトコマンダー

7
@JonathonWisnoski、いいえ-入力ではサイズがゼロのファイルのように動作するため、最初の読み取りでファイルがEOFにあると報告されます。
godlygeek

はい、そうです。
godlygeek

3
@JonathonWisnoskiは/ dev / zeroを調べます。
パエロエベルマン

16

/dev/nulldevice file」と呼ばれる特別な種類のファイルです。

デバイスファイルは、いくつかのカーネル機能へのインターフェースとして機能します。ディレクトリエントリ(「inode」)に必要なスペースを占有するだけですが、実際のコンテンツはなく、実際のファイルサイズもありません。

その他のデバイスファイルは、たとえば/dev/sda(通常はHDDまたはSSD)、/dev/zero(読み取り時にゼロを生成するファイル)、または/dev/random(読み取り時にランダムデータを生成するファイル)です。実際には、すべてのファイルについて/dev/は、デバイスファイルまたはデバイスファイルを指すリンクのいずれかです。


この回答のほとんどが正しい(+1)と思いますが、iノードエントリのサイズを占めると言うのは少し誤解を招くと思います。ディスクスペースを指す場合はスペースを占有しないか、実装全体をキャラクターデバイスと呼ぶ場合はそれ以上を占有します。
コス

2
他のファイルと同様に、デバイスファイルには、所有者、権限、メジャー/マイナー番号、およびその他のメタデータを格納するiノードが必要です。これは、このiノードがどのように、どこに保存されているかによって異なりmknodます(任意の場所でデバイスファイルを作成できます)。/dev/iノードのような仮想ファイルシステムの場合、ディスク領域を占有するのではなく、メモリを占有します。
フロリアンディーシュ

まさに。私は自分自身をうまく表現できなかったと思うので、言い替えさせてください。おそらく私が指摘しているのは少しうるさいので、そのことを許してください。私が意味したのは、各キャラクターデバイスがそのiノードエントリのためにメモリのいくつかのスペースを占有していると述べた場合、おそらくあなたはそれらと一緒にロードされるそのようなデバイスの読み取り/書き込み時に呼び出される関数を指摘したいということですそうも。
コス

ファイルがそのiノードテーブルエントリによって占有されているスペースを占有していると言うのは本当に正しいですか?これは通常、人々(およびソフトウェアの人々が書いたもの)がファイルサイズについて話すときの意味に含まれるとは思わない。特に、またはのような文字特殊デバイスのサイズを要求lsduて報告するには、0を返します/dev/null/dev/random
エリアケイガン

申し訳ありませんが、私がこの答えを否定しました。誰かが私が言ったことについて間違っていることを証明しない限り(私はそうかもしれません)、私はまだキャラクターデバイスがiノードエントリのスペースを占有していると述べるのは間違っていると思います。
コス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.