PROCFS(5)

名称
procfs - プロセスファイルシステム

書式

    proc		/proc	procfs	rw 0 0

解説
プロセスファイルシステム、すなわち procfs はファイルシステム中でシステムプロセステーブルの閲覧を可能にします。 procfs は通常 /proc にマウントされ、 ps(1) や w(1) といったプログラムの完全な動作に必要なものです。

procfs は以前の FreeBSD 1.1 procfs での実装とは異なり、 プロセス空間に 2 つのレベルの視点を提供します。 高いレベルでは、プロセスはそれ自身が、10 進数による先頭に 0 の付かない 自分のプロセス ID によって、名前付けされます。また curproc と呼ばれる調査要求を行なったプロセスを参照する特別なノードが存在します。

それぞれのノードは以下の項目を含むディレクトリです:

それぞれのディレクトリは数個のファイルを含んでいます:

ctl 多様な制御操作をサポートする書き込みのみのファイル。 制御コマンドは ctl ファイルに文字列として書き込まれます。 制御コマンドは:
    attach
        対象プロセスを停止し、 送信プロセスに対してデバッグ制御プロセスとなるよう手配する。
    detach
        対象プロセスの実行を継続し、デバッグプロセスの制御下から離します (送信プロセスである必要はありません)。
    run シグナルが届くか、ブレークポイントに達するか、または対象プロセスが 終了するまで対象プロセスを継続して動作させます。
    step
        シグナルを届けずに対象プロセスをシングルステップさせます。
    wait
        対象プロセスがデバッグに適した平衡状態になるまで待ちます。 対象プロセスは他のどのコマンドが許可されるよりも前に この状態になる必要があります。

    文字列は、 SIG 接頭辞なしの小文字のシグナル名でも構いません。 この場合、指定したシグナルがプロセスに届けられます。 ((sigaction(2) 参照)。

dbregs
    <machine/reg.h> 中の struct dbregs で定義されるデバッグレジスタ。現在 dbregs は i386 アーキテクチャでのみ実装されています。

etype
    file 項目によって参照される実行形式のタイプ。

file
    プロセステキストが読まれる vnode への参照。 これはプロセスのシンボルテーブルへのアクセスを得る、 またはプロセスのもう 1 つのコピーを始めるために使われます。

fpregs
    <machine/reg.h> 中の struct fpregs で定義される浮動小数点レジスタ。 fpregs は、汎用レジスタセットと浮動小数点レジスタセットが明確に区別されたマシンにのみ 実装されています。

map プロセスの仮想メモリのマップ。

mem プロセスの完全な仮想メモリイメージ。 プロセス中に存在するアドレスのみがアクセスできます。 このファイルに対する読み書きはプロセスを修正します。 テキストセグメントに対する書き込みはそのプロセスのみに留まります。

note
    プロセスへシグナルを送るために使われます。実装されていません。

notepg
    プロセスグループへシグナルを送るために使われます。実装されていません。

regs
    プロセスのレジスタセットへの読み書き手段を提供します。 このファイルは <machine/reg.h> 中で定義されている struct regs バイナリデータ構造体を含んでいます。 regs はプロセスが停止しているときのみ書き込みできます。

rlimit
    これは、プロセスの現在および最大の制限を含む、読み取り専用ファイルです。 各行の書式は rlimit current max であり、-1 は無限を意味します。

status
    プロセスの状態。 このファイルは読み込みのみで、空白で分けられた以下の多数のフィールドを 含んだ 1 行を返します:

    •   コマンド名
    •   プロセス ID
    •   親プロセス ID
    •   プロセスグループ ID
    •   セッション ID
    •   制御端末の major,minor 、またはもし制御端末がない場合には -1,-1。
    •   プロセスフラグのリスト: ctty 制御端末がある、 sldr プロセスがセッションリーダである、 noflags 他の 2 つのフラグがセットされていない。
    •   コンマで区切った秒とマイクロ秒によるプロセス開始時刻
    •   コンマで区切った秒とマイクロ秒によるユーザ時間
    •   コンマで区切った秒とマイクロ秒によるシステム時間
    •   ウェイトチャネルメッセージ
    •   実効ユーザ ID と全てコンマで区切られた グループリスト(最初の項目は実効グループ ID) から成っている プロセスクリデンシャル

対象がデバッガによって fork/exec される通常のデバッギング環境では、 デバッガが fork し、子は自分自身で止まる(例えば自分で与えた SIGSTOP) べきです。 親は適切な ctl ファイルを通じて wait そして attach コマンドを発行するべきです。 子プロセスは exec 呼び出しが終わった直後に SIGTRAP を受け取ります (execve(2) 参照)。

それぞれのノードはプロセスのユーザに所持され、 ユーザのプライマリグループに属します。 mem ノードは例外的に kmem グループに属します。

関連ファイル
/proc
    procfs の通常のマウントポイント。
/proc/pid
    プロセス pid のプロセス情報を含んだディレクトリ
/proc/curproc
    カレントプロセスのプロセス情報を含んだディレクトリ
/proc/curproc/cmdline
    プロセスの実行形式名
/proc/curproc/ctl
    プロセスへの制御メッセージを送るために使われます
/proc/curproc/etype
    実行形式タイプ
/proc/curproc/file
    実行形式イメージ
/proc/curproc/fpregs
    プロセス浮動小数点レジスタセット
/proc/curproc/map
    プロセスの仮想メモリマップ
/proc/curproc/mem
    プロセスの完全な仮想アドレス空間
/proc/curproc/note
    プロセスへのシグナル送信に使われます
/proc/curproc/notepg
    プロセスグループへのシグナル送信に使われます
/proc/curproc/regs
    プロセスのレジスタセット
/proc/curproc/rlimit
    プロセスの現在および最大の rlimit
/proc/curproc/status
    プロセスの現在の状態

関連項目
mount(2), sigaction(2), unmount(2), mount_procfs(8)

作者
-nosplit このマニュアルページは Jan-Simon Pendry によって提供された記述に基づいて Garrett Wollman によって書かれ、 後に Mike Pritchard によって手直しされました。