/proc/PID/fdの実行可能なバイナリおよび共有ライブラリのファイル記述子?

/proc/PID/fdの実行可能なバイナリおよび共有ライブラリのファイル記述子?

ユーザープロセスは実行可能ファイル自体と共有ライブラリのファイル記述子をスケジュールしますか?たとえば、/proc/PID/fd//に加えて、bash少なくとも以下が表示されると予想されます。fdstdinstdoutstderr

  1. 一つのために/usr/bin/bash
  2. 文書用の/usr/lib/XXX/libc-2.XX.soコピーの1部。

カーネル機能によるとload_elf_binaryfd、少なくともaが実行可能ファイルに割り当てられているようです。

ただし、実際にはフォルダにはそのようなfd項目はありません/proc/PID/fd。おそらく存在しないからですtask_struct->files->fd_array。したがって、質問は次のようになります。

  1. カーネルは、fileプロセス固有の構造(例:/)でtask_struct実行可能ファイルと共有ライブラリに対応するオブジェクトへのポインタを保存しますかthread_info
  2. では、どのような構造なのでしょうか?

答え1

いいえ、通常、これらのエントリのファイル記述子はありません。ただし、/proc/PID/exe実行中のバイナリが表示され、マップされたアイテムがどこにあるかが表示され/proc/PID/mapsます。/proc/PID/map_files/そしてこれが存在しなくても、カーネルはそれを追跡し続けることができます。カーネルメモリのすべてが/proc

関連情報