MOUNT_PROCFS(8)

名称
mount_procfs - プロセスファイルシステムをマウントする

書式
mount_procfs [-o options] /proc mount_point

解説
mount_procfs コマンドは、プロセスの名前空間インスタンスを グローバルなファイルシステム名前空間に接続します。 マウントポイントは /proc にするのが伝統です。このコマンドは通常、ブート時に mount(8) によって実行されます。

オプションは以下のものがあります:

-o  -o フラグのあとに、オプションをカンマで区切って並べて指定します。 指定可能なオプションとその意味は mount(8) を参照してください。

プロセスファイルシステムのルートには、活動中のプロセスのエントリが 含まれています。これらのプロセスは、その pid が名前となったディレクトリとして 見えるようになっています。さらに、 curproc という特別のエントリで現在のプロセスを参照できます。

各ディレクトリには以下のような数個のファイルが含まれています:

ctl 書込み専用ファイルで、様々な制御命令をサポートしています。 制御コマンドは、 ctl ファイルに文字列として書き込みます。 以下のような制御コマンドがあります:

    attach
        実行を中断し、送り手側のプロセスがデバッグ制御プロセスになるように 準備されます。

    detach
        ターゲットプロセスの実行を再開し、デバッグプロセスの制御から除外します。

    run シグナルが発生するか、ブレークポイントにヒットするか、 ターゲットプロセスが終了するまで、ターゲットプロセスの実行を継続します。

    step
        シグナルを発生させずに、ターゲットプロセスを 1 ステップだけ実行します。

    wait
        ターゲットプロセスが止まるまで待ちます。 ターゲットプロセスは、run, step, signal コマンドが実行される前に 止まっていなければなりません。

    文字列は、シグナルの名前でもかまいませんが、その場合は先頭に SIG をつけずに小文字の文字列にしてください。 こうすれば、そのシグナルがプロセスに送られます (sigaction(2) を参照してください)。

file
    プロセスのテキストセグメントが読み込まれたときの vnode への参照です。 プロセスのシンボルテーブルを取得したり、プロセスの別のコピーを実行させるときに 使うことができます。

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

mem プロセスの完全な仮想メモリイメージです。プロセス中に存在するアドレスにだけ アクセスできます。このファイルに書くと、そのプロセスが書き変わります。 テキストセグメントへの書込みは、通常はそのプロセスにしか影響を与えません。 なぜなら MAP_PRIVATE で map されているからです。しかしながら、これは 保証されていません。

note
    実装されていません。

notepg
    実装されていません。

regs
    プロセスのレジスタ群を読み書きすることができます。このファイルには、 <machine/reg.h> で定義されている struct regs のバイナリが入っています。 regs への書込みは、プロセスが停止している時にしかできません。

fpregs
    浮動小数点レジスタで、これは <machine/reg.h> 内の struct fpregs で定義されています。 fpregs は、汎用レジスタ群と浮動小数点レジスタ群が異なっている機種でしか 実装されていません。

status
    プロセスの状態です。このファイルは読み出し専用で、 以下のようなフィールドを空白で区切って 1 行にして返します:

    •   コマンド名
    •   プロセス ID
    •   親プロセス ID
    •   プロセスグループ ID
    •   セッション ID
    •   制御端末の major, minor 番号、または、制御端末が存在しないときは -1,-1 。
    •   プロセスフラグのリスト: 制御端末があるときは ctty 、プロセスがセッションリーダのときは sldr 、どちらのフラグもセットされていないときは noflags 。
    •   プロセスの実行開始時間の秒とミリ秒。カンマで区切られている。
    •   ユーザ時間の秒とミリ秒。カンマで区切られている。
    •   システム時間の秒とミリ秒。カンマで区切られている。
    •   ウェイトチャンネルメッセージ
    •   実効ユーザ ID とグループのリスト (グループのうち、最初のものが実効グループ ID )。全てカンマで区切られている。

通常のデバッグ環境では、ターゲットはデバッガから fork や exec されるため、 デバッガが fork を行い、その子プロセスは自分で実行を停止しなければ なりません (たとえば、自分自身に SIGSTOP を送るなど)。親プロセスは、 wait を発行して、それから適切な ctl ファイルを用いて attach コマンドを実行します。子プロセスは exec をコール (execve(2) 参照) したあとすぐに SIGTRAP を受け取ることになります。

関連ファイル
/proc/#
/proc/#/ctl
/proc/#/file
/proc/#/map
/proc/#/mem
/proc/#/note
/proc/#/notepg
/proc/#/regs
/proc/#/fpregs
/proc/#/status
/proc/curproc

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

警告
procfs のほとんどの機能は state が管理されることを要求しているので、 このファイルシステムは NFS-export してはいけません。

歴史
mount_procfs ユーティリティは 4.4BSD で初めて登場しました。