prctl - システムコールの説明 - Linux コマンド集 一覧表
名前
prctl - プロセスの操作を行なう
書式
#include <sys/prctl.h>
int prctl(int
option
, unsigned long
arg2
, unsigned long
arg3
, unsigned long
arg4
, unsigned long
arg5
);
説明
prctl ()の動作は最初の引き数によって決定される。(この値は <linux/prctl.h > に定義されている。) 残りのパラメータは 最初のものに依存して変化する。 一番目の引き数は以下に設定できる:
- PR_SET_PDEATHSIG
- (Linux 2.1.57 以降) 親プロセスが死んだ場合に、 arg2 に指定したシグナルを送って知らせるように設定する(シグナルの 範囲は 1..maxsig であり、0 で解除する。) シグナルは親が死んだ時にこのシステム・コールを行なったプロセスに 送られる。この値は fork ()によって解除される。
- PR_GET_PDEATHSIG
- (Linux 2.3.15 以降) 親プロセス死亡シグナルの現在の値を読み取り (int *) arg2 に格納する。
- PR_SET_DUMPABLE
- (Linux 2.4 以降) デフォルトの振る舞いではコアダンプを引き起こすようなシグナルを受信したときに、 コアダンプするかどうかを決定するフラグを設定する。 (通常このフラグはデフォルトではセットされているが、 set-user-ID あるいは set-group-ID プログラムが実行されたり、 さまざまなシステムコールによってプロセスの UID や GID が操作されたときに クリアされる。) 2.6.12 以前のカーネルでは、 arg2 は 0 (プロセスはダンプ不可) あるいは 1 (プロセスはダンプ可能) の どちらかでなければならない。 カーネル 2.6.13 以降では、値 2 が追加されている; この値を指定すると、通常はダンプされないバイナリが root だけが読み込み可能な形でダンプされる ( proc (5)の /proc/sys/fs/suid_dumpable の説明も参照)。
- PR_GET_DUMPABLE
- (Linux 2.4 以降 呼び出し元プロセスにおけるダンプ可能フラグの 現在の状態を (関数の返り値として) 返す。
- PR_SET_KEEPCAPS
- プロセスの「資格保持」フラグを設定する。 このフラグは、プロセスの実 UID、実効 UID、保存 set-user-ID のうち少なくとも 一つが 0 であった状態から、これら全てが 0 以外に変更されたとき、 プロセスの実効・許可資格集合がクリアされるかどうかを決定する。 (デフォルトでは、これらの資格集合はクリアされる。) arg2 は 0 (資格をクリアする) あるいは 1 (資格を保持する) の どちらかでなければならない。
- PR_GET_KEEPCAPS
- 呼び出し元プロセスにおける「資格保持」フラグの 現在の状態を (関数の返り値として) 返す。
返り値
option が PR_GET_DUMPABLE または PR_GET_KEEPCAPS の場合は成功時に 0 または 1 を返す。 option がその他の場合は成功時に 0 を返す。 エラーの場合は -1 が返され、 errno に適切な値が設定される。
エラー
- EINVAL
- option の値が理解できない。または option が PR_SET_PDEATHSIG で arg2 が 0 でもシグナル番号でもない。
準拠
このコールは Linux 特有である。
IRIX には
prctl
()システム・コールがあるが (MIPS アーキテクチャにおいて
irix_prctl として Linux 2.1.44 で同様に導入された)、
そのプロトタイプは
ptrdiff_t prctl(int
option
, int
arg2
, int
arg3
);
である。ユーザー当りのプロセス最大数を取得するオプション、
プロセスの使用できる最大プロッサー数を取得するオプション、
現在特定のプロセスが停止(block)させられているかどうか調べるオプション、
スタックサイズの最大値の取得や設定を行なうオプションなどがある。
利用可能な環境
prctl ()システムコールは Linux 2.1.57 で導入された。