/proc
Linuxでファイルシステムを変更するとき、/proc/self
現在のプロセスのプロセスディレクトリを指すシンボリックリンクであることがわかりました。どのように実装されるのか知りたいです。 1つの解決策はシンボリックリンクを変更することですすべてのコンテキスト切り替えしかし、これはディスクアクセスに関連しているため、非常に費用がかかります。
答え1
http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482現在の実装です。
ファイルシステムはproc
完全に仮想であり、readlink
特別なシンボリックリンクの正しい場所の内部 VFS デリゲートとして実装されます。したがって、self
すべてのコンテキスト遷移ではなく読み取り/巡回時に指す内容を計算します。
答え2
ファイルは/proc
ディスクに保存されず、カーネルによって動的に生成されます。バラより/procを開いて読むとどうなりますか?
/proc
プログラミングに興味がある場合は、次の実装について読むことができます。カーネルソースコード。コンテンツ/proc/self
シンボリックリンクは次のように作成されます。機能呼び出しプロセスのpidでバッファを埋めます。