cat /proc/asound/cardsを実行すると、procがこの情報を取得するすべてのサウンドカードの詳細が一覧表示されます。このファイルは手動で入力したい場合は常に更新されます。
ベストアンサー1
これは/proc
(および/sys
)がカーネルインタフェースであるためです。ディスクに物理ファイルがありません。この情報はオペレーティングシステムによって直接提供されます。個々のファイルはソケットインタフェースに似ています。ファイルを読み取るときにデータを要求することです。
これプロセスファイルシステム明らかにUNIX 8に由来し(Linux実装は他のほとんどの実装と同様にBell LabsのPlan 9で複製されていますが)、「すべてはファイルです」というUNIXモットーに従います。これは主に個々の実行中のプロセス(一番上の数字がpid)を表しますが、わかるように、これには他のいくつかの項目も含まれます。 Linuxではハードウェア指向です/sys
。
プログラムでproc情報を取得するよりも「より良い選択肢」を探している人が時々あります。ここで「より良い選択肢」とは、sysctl()
などのシステムコールを意味しますioctl()
。これは、procファイルまたはsysファイルを読み取るには、通常のファイルを読み取るなどのいくつかのI / Oオーバーヘッドが含まれているという誤解から来ているようです。一部のオペレーティングシステム(私の考えではFreeBSD)がその逆を実行し、Linuxではsysctl()
呼び出しは価値がありませんが、これは本当ではありません。
~からMan 2システム制御:
このシステムコールの使用は長い間推奨されておらず、あまり人気がなく、将来のカーネルバージョンでは消える可能性が高くなります。プログラムからすぐに削除します。代わりに /proc/sys インターフェイスを使用してください。
少なくともLinuxでは、procfsは正式に推奨されるカーネル情報ソースです。 「より良い選択」はありません。