KVM_GETPROCS(3) FreeBSD ライブラリ関数マニュアル KVM_GETPROCS(3)
名称
kvm_getprocs, kvm_getargv, kvm_getenvv − ユーザプロセス状態にアクセスする |
ライブラリ
カーネルデータアクセスライブラリ (libkvm, −lkvm) |
書式
#include <kvm.h> struct kinfo_proc * |
kvm_getprocs(kvm_t *kd, int op, int arg, int *cnt); char ** |
kvm_getargv(kvm_t *kd, const struct kinfo_proc *p, int nchr); char ** |
kvm_getenvv(kvm_t *kd, const struct kinfo_proc *p, int nchr); |
解説 |
kvm_getprocs() は kd が指示するカーネルの動作中のプロセスの (サブ) 集合を 返します。 op と arg の引数は,返されるプロセスの集合を制限する属性を構成 します。 op の値は以下のフィルタリング属性を記述しています : |
KERN_PROC_ALL
すべてのプロセス 見つけたプロセス数は参照パラメータ cnt で返されます。プロセスは kinfo_proc 構造体の連続配列として返されます。このメモリは局所的に割り当て られ、 kvm_getprocs() と kvm_close() に引き続く呼び出しはこの記憶域に上書 きします。 kvm_getargv() はヌルで終了する引数ベクタを返します。このベクタは p が示す プロセスに渡されたコマンドライン引数に対応します。おそらく、これらの引数 はプロセス生成時の exec(3) に渡された値に相当します。しかしながら、この情 報は、故意にプロセス自身のコントロール下にあります。オリジナルのコマンド 名は、 kvm_getprocs() によって返されたプロセス構造体の p_comm フィールド に、変更されていない状態で見つけることができます。 nchr 引数はヌルバイトを含めた最大の文字数を示し、文字列の構築に使います。 もしもこの量を超えてしまえば、オーバフローの原因となる文字列は切り捨てら れ、結果が部分的に返されます。これは ps(1) や w(1) のようなプログラムに とっては簡便な方法です。これらのプログラムにおいては、コマンドの 1 行要約 のみを印字しますので、無視するためのみに多量のテキストを複写すべきではあ りません。 nchr が 0 ならば、なんら制限は課されませんし、すべての引数の文 字列はそっくりそのまま返されます。 argv ポインタと文字列記憶域に割り当てられたメモリは、 kvm ライブラリに よって所有されます。引き続く kvm_getprocs() と kvm_close(3) 呼び出しはこ の記憶域を容赦なく使います。 kvm_getenvv() 関数は kvm_getargv() に類似していますが、環境文字列のベクタ を返します。このデータはまたプロセスにより変更可能です。 戻り値 |
kvm_getprocs(), kvm_getargv(), および kvm_getenvv() はすべて異常終了時に NULL を返します。 |
バグ
これらのルーチンは kvm インタフェースに属していません。 |
関連項目
kvm(3), kvm_close(3), kvm_geterr(3), kvm_nlist(3), kvm_open(3), kvm_openfiles(3), kvm_read(3), kvm_write(3) FreeBSD 10.0 June 4, 1993 FreeBSD 10.0 |