tail head cat sleep
QR code linking to this page

manページ  — KVM_GETPROCS

名称

kvm_getprocs, kvm_getargv, kvm_getenvv – ユーザプロセス状態にアクセスする

内容

ライブラリ

Kernel Data Access Library (libkvm, -lkvm)

書式

#include <kvm.h>
#include <sys/param.h>
#include <sys/sysctl.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 が指示するカーネルの動作中のプロセスの (サブ) 集合を返します。 oparg の引数は,返されるプロセスの集合を制限する属性を構成します。 op の値は以下のフィルタリング属性を記述しています :

KERN_PROC_ALL
  すべてのプロセス
KERN_PROC_PID
  プロセス ID arg を持つプロセス
KERN_PROC_PGRP
  プロセスグループ arg を持つプロセス
KERN_PROC_SESSION
  セッション arg を持つプロセス
KERN_PROC_TTY
  tty arg を持つプロセス
KERN_PROC_UID
  実効ユーザ ID arg を持つプロセス
KERN_PROC_RUID
  実ユーザ ID arg を持つプロセス

見つけたプロセス数は参照パラメータ 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)

KVM_GETPROCS (3) June 4, 1993

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

The most horrifying thing about Unix is that, no matter how many times you hit yourself over the head with it, you never quite manage to lose consciousness. It just goes on and on.
— Patrick Sobalvarro