日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
PROCCTL(2) FreeBSD システムコールマニュアル PROCCTL(2) 名称 procctl -- プロセスを制御する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <sys/procctl.h> int procctl(idtype_t idtype, id_t id, int cmd, void *arg); 解説 procctl() システムコールは、プロセスを制御するために提供します。idtype と id 引数は、制御するプロセスの組を指定します。複数のプロセスが識別子と一致 するなら、procctl は、できるだけ選択されたプロセスの多くを制御するために ``best effort'' (最善の努力) を行います。選択されたプロセスが成功して要求 を終了しないなら、エラーが単に返されます。次の識別子のタイプがサポートさ れます: P_PID プロセス ID id があるプロセスを制御します。 P_PGID ID id があるプロセスグループに属するプロセスを制御します。 実行する制御要求は、cmd 引数によって指定されます。次のコマンドがサポート されます: PROC_SPROTECT プロセス保護状態を設定します。これは、システムが 利用可能なメモリとスワップを使い果たすなら、kill されることから保護されるプロセスをマークするため に使用されます。arg パラメータは、操作と 0 以上の オプションのフラグを含んでいる整数を指さなければ なりません。次の操作がサポートされます: PPROT_SET 保護される選択されたプロセスを マークします。 PPROT_CLEAR 選択されたプロセスの保護された状 態をクリアします。 次のオプションのフラグがサポートれます: PPROT_DESCEND 各選択されたプロセスに加えて、 各選択されたプロセスのすべての 子プロセスに要求された操作を適 用します。 PPROT_INHERIT PPROT_SET とともに使用されると き、保護される各選択されたプロ セスの将来の子プロセスをすべて マークします。また、将来の子プ ロセスは、それらの将来の子プロ セスをすべてマークします。 PROC_REAP_ACQUIRE 現在のプロセスのための reaper の状態を獲得しま す。reaper 状態は、reaper 状態の獲得が reaper プ ロセスに repar (再教育) される後に、フォークされ たreaper の子孫によって子供が孤立されたことを意味 しています。システムの初期化の後に、init(8) は、 デフォルトの reaper です。 PROC_REAP_RELEASE 現在のプロセスのための reaper 状態をリリースしま す。現在のプロセスの reaper は、現在のプロセスの 子孫の新しい reaper になります。 PROC_REAP_STATUS それが reaper であるとき、指定されたプロセスの reaper に関しての情報、またはプロセス自体を提供し ます。data 引数は、成功して返るとき、システムコー ルによって書き込まれる、procctl_reaper_status 構 造体を指さなければなりません。 struct procctl_reaper_status { u_int rs_flags; u_int rs_children; u_int rs_descendants; pid_t rs_reaper; pid_t rs_pid; }; rs_flags は、次のフラグを返させます: REAPER_STATUS_OWNED 指定されたプロセスは、 reaper 状態を獲得し、 それにリリースされませ ん。フラグが返されると き、指定されたプロセス id pid は、reaper を識 別し、そうでなければ、 構造体の rs_reaper フィールドは、指定され たプロセス id のための reaper の pid に設定さ れます。 REAPER_STATUS_REALINIT 指定されたプロセスは、 reaper ツリーのルート です、すなわち、 init(8)。 rs_children フィールドは、子孫のうちの reaper の 子供の数を返します。あらゆる既存の子供のための reaper が、PROC_REAP_ACQUIRE 操作でリセットされな いので、reaper が指定されたプロセスではない子供が あることが可能です。rs_descendants フィールドは、 (複数の) reaper の子孫の合計の数を返し、サブツ リーの reaper の子孫をカウントしません。rs_reaper フィールドは、reaper pid を返します。rs_pid フィールドは、いくつかの子孫があるなら、1 つの reaper の子供の pid を返します。 PROC_REAP_GETPIDS 指定されたプロセスの reaper の子孫のリストを問い 合わせます。要求は、data パラメータの procctl_reaper_pids 構造体へのポインタを取りま す。 struct procctl_reaper_pids { u_int rp_count; struct procctl_reaper_pidinfo *rp_pids; }; 呼び出されるとき、rp_pids フィールドは、返り時に 書き込まれる、procctl_reaper_pidinfo 構造体の配列 を指さなければならず、rp_count フィールドは、た だ、rp_count 要素がカーネルによって書き込まれる、 配列のサイズを指定しなければなりません。 struct procctl_reaper_pidinfo 構造体は、reaper の 子孫の 1 つに関するいくらかの情報を提供します。子 供ではない子孫のために、それは、終了したオリジナ ルの子供プロセスと終了したプロセスの pid が、関係 のないプロセスのために、再利用される競合のため に、不正確に識別されることに注意してください。 struct procctl_reaper_pidinfo { pid_t pi_pid; pid_t pi_subtree; u_int pi_flags; }; pi_pid フィールドは、子孫のプロセス id です。 pi_subtree フィールドは、プロセスの親 (または祖父 母) である reaper の子供の pid を提供します。 pi_flags フィールドは、さらなる子孫を記述する、次 のフラグを返します。 REAPER_PIDINFO_VALID procctl_reaper_pidinfo 構造体がカーネルによっ て書き込まれたことを示 すように設定します。 rp_pids 配列を 0 で満た し、 REAPER_PIDINFO_VALID フ ラグをテストすること は、呼び出し側が、返さ れた配列の終わりを検出 することを可能にしま す。 REAPER_PIDINFO_CHILD pi_pid フィールドは、 reaper の直接的な子供を 識別します。 REAPER_PIDINFO_REAPER 報告されたプロセス自体 は、収穫者 (reaper) で す。下位の収穫者 (reaper) の子孫は、報告 されません。 PROC_REAP_KILL reaper の子孫のいくらかのサブセットへのシグナルを 配信することを要求します。data パラメータは、返さ れるパラメータと状態の両方のために使用される、 procctl_reaper_kill 構造体を指さなければなりませ ん。 struct procctl_reaper_kill { int rk_sig; u_int rk_flags; pid_t rk_subtree; u_int rk_killed; pid_t rk_fpid; }; rk_sig フィールドは、配信されるシグナルを指定しま す。0 は、kill(2) と違って有効なシグナル番号では ありません。rk_flags フィールドは、さらなる操作を 指示します。それは、次のフラグを論理和 (OR) され ます: REAPER_KILL_CHILDREN reaper の直接の子供にだ け指定されたシグナルを配 信します。 REAPER_KILL_SUBTREE rk_subtree フィールドで 指定された pid で直接の 子供によってフォークされ た子孫だけに指定されたシ グナルを配信します。 REAPER_KILL_CHILDREN も REAPER_KILL_SUBTREE フラ グも指定されないなら、reaper のすべての現在の子孫 は、シグナルが起こされます。 シグナルがあらゆるプロセスに配信されたなら、要求 からの返り値は、0 です。この場合に、rk_killed フィールドは、シグナルが起こされたプロセスの数を 識別します。rk_fpid フィールドは、例えば、パー ミッションの問題のために、シグナルの配信が失敗し た最初のプロセスの pid に設定されます。そのような プロセスが存在しないなら、rk_fpid フィールドは、 -1 に設定されます。 PROC_TRACE_CTL 整数引数の値にしたがって、指定された (複数の) プ ロセスのトレースを有効にするか、または無効にしま す。トレースは、ptrace(2) と ktrace(2), デバック の sysctl hwpmc(4), dtrace(1) とコアダンプを使用 して、プロセスへのアタッチメントを含みます。data 引数のために指定できる値は、次の通りです: PROC_TRACE_CTL_ENABLE それが PROC_TRACE_CTL_DISABLE によって無効にさ れた後に、トレー スを有効にしま す。自体のために のみ許可されま す。 PROC_TRACE_CTL_DISABLE 指定されたプロセ スのためにトレー スを無効にしま す。プロセスが execve(2) syscall で実行しているプ ログラムを変更す るとき、トレース は、再び有効にさ れます。子供のプ ロセスは、fork(2) で親プロセスから トレースの設定を 引き継ぎます。 PROC_TRACE_CTL_DISABLE_EXEC PROC_TRACE_CTL_DISABLE と同じですが、 execve(2) の後で さえプロセスのた めの設定の持続を 除きます。 PROC_TRACE_STATUS data によって指された整数変数の指定されたプロセス のための現在のトレースの状態を返します。トレース が無効にされるなら、data は、-1 に設定されます。 トレースが有効にされますが、デバッガが ptrace(2) syscall によってアタッチされていないなら、data は、0 に設定されます。デバッガがアタッチされるな ら、data は、デバッガプロセスの pid に設定されま す。 PROC_TRAPCAP_CTL ENOTCAPABLE または ECAPMODE エラーにいずれかを与 えるあらゆる syscall からの返りで、指定されたサン ドボック化されたプロセスのためのケーパビリティ モードのサンドボックのアクションを制御します。制 御が有効であるなら、syscall からのそのようなエ ラーは、syscall から返る直前に、同時的な SIGTRAP シグナルをスレッドに配信します。 data 引数のために指定できる値は、次の通りです: PROC_TRAPCAP_CTL_ENABLE ケーパビリティモード のアクセス違反で SIGTRAP シグナルの配 信を有効にします。有 効にされたモードは、 プロセスの子プロセス によって継承され、 fexecve(2) 呼び出し の後に保持されます。 PROC_TRAPCAP_CTL_DISABLE ケーパビリティモード のアクセス違反でシグ ナルの配信を無効にし ます。グローバルな sysctl kern.trap_enotcap は、まだシグナルを配 信しているかもしれな いことに注意してくだ さい。capsicum(4) を 参照してください。 シグナルの配信において、siginfo シグナルハンドラ のパラメータの si_errno メンバは、syscall のエ ラー値に設定され、si_code メンバは、TRAP_CAP に設 定されます。 ケーパビリティモードに関する詳細については、 capsicum(4) を参照してください。 PROC_TRAPCAP_STATUS 指定されたプロセスのためのシグナル伝達ケーパビリ ティモードのアクセス違反の現在の状態を返します。 data 引数によって指される整数値は、プロセス制御が シグナルの配信を有効にするなら、 PROC_TRAPCAP_CTL_ENABLE に設定され、そうでなけれ ば、PROC_TRAPCAP_CTL_DISABLE に設定されます。 シグナルの配信の独立していグローバルな制御を与え る、上記の sysctl kern.trap_enotcap に関する注を 参照してください。 PROC_PDEATHSIG_CTL 呼び出しているプロセスの親が終了するとき、シグナ ルの配信を要求します。idtype は、P_PID でなければ なりません、id は、有効な違いなしで、呼び出し側の pid または 0 のいずれかでなければなりません。値 は、セットユーザ ID (set-user-ID) またはセットグ ループ ID (set-group-ID) バイナリを実行するとき、 子プロセスのためにクリアされます。arg は、呼び出 し側に配達されるべきシグナルを示しているタイプ int の値を指さなければなりません。以前に要求され たシグナルの配信をキャンセルするために 0 を使用し ます。 PROC_PDEATHSIG_STATUS 呼び出しているプロセスの親が終了するとき、配信さ れる、現在のシグナル数を問い合わせます。idtype は、P_PID でなければなりません、id は、有効な違い なしで、呼び出し側の pid または 0 のいずれかでな ければなりません。arg は、タイプ int の値を保持す ることができるメモリ位置を指さなければなりませ ん。シグナルの配信が要求されなかったなら、それ は、返るときに、0 を含みます。 注 プロセスのトレースを無効にすることは、他のシステムメカニズムを通して、 カーネルと特権が与えられたプロセスによって、バイパス可能であるように、セ キュリティ機能と見なすべきではありません。そのようなものとして、それは、 暗号化法のキー入力の素材または他の秘密のデータを確実に保護するために利用 されるべきではありません。 戻り値 エラーが生じるなら、-1 の値が、返され errno は、エラーを示す値に設定され ます。 エラー procctl() システムコールは、次の場合に失敗します: [EFAULT] arg パラメータが、プロセスの割り付けられたアドレス空間 の外側を指しています。 [EINVAL] cmd 引数が、サポートされないコマンドを指定しています。 idtype 引数は、サポートされない識別子のタイプを指定し ます。 [EPERM] 呼び出しているプロセスは、選択されたプロセスのいずれか で、要求された操作を実行する許可がありません。 [ESRCH] プロセスが要求された idtype と id と一致しませんでし た。 [EINVAL] 無効の操作またはフラグが、PROC_SPROTECT コマンドのため の arg で渡されました。 [EPERM] idtype 引数が、P_PID と等しくないか、または id が、 PROC_REAP_ACQUIRE または PROC_REAP_RELEASE 要求のため の、呼び出しているプロセスの pid と等しくありません。 [EINVAL] 無効のまたは未定義のフラグが、PROC_REAP_KILL 要求に渡 されました。 [EINVAL] 無効のまたは 0 のシグナル番号が、PROC_REAP_KILL 要求の ために要求されました。 [EINVAL] PROC_REAP_RELEASE 要求が、init(8) プロセスによって発行 されました。 [EBUSY] PROC_REAP_ACQUIRE 要求が、すでに reaper 状態を獲得した プロセスによって発行され、まだ、それをリリースしません でした。 [EBUSY] PROC_TRACE_CTL 要求が、既にトレースされているプロセス に対して発行されました。 [EPERM] プロセス (PROC_TRACE_CTL_ENABLE) のトレースを再有効に するため、または execve(2) で PROC_TRACE_CTL_DISABLE の持続性を無効にする PROC_TRACE_CTL 要求が、現在でない プロセスのために発行されました。 [EINVAL] PROC_TRACE_CTL または PROC_TRAPCAP_CTL 要求のための整 数 data パラメータの値が、無効です。 [EINVAL] PROC_PDEATHSIG_CTL または PROC_PDEATHSIG_STATUS 要求 が、サポートされていない id, idtype または無効のシグナ ル番号を参照しました。 関連項目 dtrace(1), cap_enter(2,) kill(2), ktrace(2), ptrace(2), wait(2), capsicum(4), hwpmc(4), init(8) 歴史 procctl() 関数は、FreeBSD 10.0 で登場しました。reaper 機能は、Linux と DragonflyBSD の同様な機能に基づき、FreeBSD 10.2 ではじめて登場しました。 PROC_PDEATHSIG_CTL 機能は、Linux の prctl(PR_SET_PDEATHSIG, ...) 機能に基 づき、FreeBSD 11.2 ではじめて登場しました。 FreeBSD 11.2 May 12, 2018 FreeBSD 11.2