次の2つのファイルは仮想ファイルです。
/dev/sda1
/proc/cpuinfo
私はこれが/dev/sda1
デバイスファイル(デバイスドライバを指す)であることを知っているので、このファイルにアクセスすると実際にデバイスドライバにアクセスすることになります。
しかし、/proc/cpuinfo
このファイルもデバイスファイルですか?それでは、他の仮想ファイルはすべてLinuxデバイスファイルですか?
答え1
以下に説明するように、すべてのファイルは/proc
ファイルシステムで提供されます。proc
マンページ:
ファイルシステムは、
proc
カーネルデータ構造へのインタフェースを提供する擬似ファイルシステムです。
これは、カーネルが保存するデータへのアクセスを提供するためにカーネルによって提供される特別なファイルシステムです。例えばCPU情報(cpuinfo
)、プロセス情報(各プロセス識別子に対応する数字ディレクトリにあります/proc
)...その中のファイルはデバイスファイルではなく、カーネルから情報を取得するために関数呼び出しを実行するための有効なエンドポイントです。
他の特別なファイルシステムにはdevtmpfs
とsysfs
。
したがって、いいえ、すべての「仮想」ファイルはデバイスファイルではありません。デバイスノードが物理ファイルとして存在するため、デバイスファイルはまったく仮想ではありません。ほとんどの人がファイルについて考えるのと同じようには機能しませんが、それでもファイルです。
次の質問は、すべてをよりよく理解するのに役立ちます。
答え2
いいえ。 Linux では、 /proc
カーネルデータ構造へのインタフェースを提供する擬似ファイルシステムです。これには、以下のファイルと同じ意味を持つ文字またはブロック特殊ファイルはありません(これらのファイルを使用してファイルシステムをマウントしたり、モデムやテープドライブなどと通信することはできません)/dev
。/proc
proc(5)
システムマニュアルには、このファイルシステム(man 5 proc
)が詳細に記載されています。