procデバイスに関する情報を更新する方法[複製]

procデバイスに関する情報を更新する方法[複製]

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は正式に推奨されるカーネル情報ソースです。 「より良い選択」はありません。

おすすめ記事