EN JA
LIBPROCSTAT(3)
LIBPROCSTAT(3) FreeBSD Library Functions Manual LIBPROCSTAT(3)

名称

procstat_open_core, procstat_open_kvm, procstat_open_sysctl, procstat_close, procstat_getargv, procstat_getauxv, procstat_getenvv, procstat_getfiles, procstat_getgroups, procstat_getkstack, procstat_getosrel, procstat_getpathname, procstat_getprocs, procstat_getumask, procstat_getvmmap, procstat_freeargv, procstat_freeauxv, procstat_freeenvv, procstat_freefiles, procstat_freegroups, procstat_freekstack, procstat_freeprocs, procstat_freevmmap, procstat_get_pipe_info, procstat_get_pts_info, procstat_get_sem_info, procstat_get_shm_info, procstat_get_socket_info, procstat_get_vnode_infoファイルとプロセス情報検索のためのライブラリインタフェース

ライブラリ

library “libprocstat”

書式

#include < sys/param.h>
#include < sys/queue.h>
#include < libprocstat.h>

void
procstat_close( struct procstat *procstat);

void
procstat_freeargv( struct procstat *procstat);

void
procstat_freeauxv( struct procstat *procstat, Elf_Auxinfo *auxv);

void
procstat_freeenvv( struct procstat *procstat);

void
procstat_freefiles( struct procstat *procstat, struct filestat_list *head);

void
procstat_freegroups( struct procstat *procstat, gid_t *groups);

void
procstat_freekstack( struct procstat *procstat, struct kinfo_kstack *kkstp);

void
procstat_freeprocs( struct procstat *procstat, struct kinfo_proc *p);

void
procstat_freevmmap( struct procstat *procstat, struct kinfo_vmentry *vmmap);

int
procstat_get_pipe_info( struct procstat *procstat, struct filestat *fst, struct pipestat *pipe, char *errbuf);

int
procstat_get_pts_info( struct procstat *procstat, struct filestat *fst, struct ptsstat *pts, char *errbuf);

int
procstat_get_sem_info( struct procstat *procstat, struct filestat *fst, struct semstat *sem, char *errbuf);

int
procstat_get_shm_info( struct procstat *procstat, struct filestat *fst, struct shmstat *shm, char *errbuf);

int
procstat_get_socket_info( struct procstat *procstat, struct filestat *fst, struct sockstat *sock, char *errbuf);

int
procstat_get_vnode_info( struct procstat *procstat, struct filestat *fst, struct vnstat *vn, char *errbuf);

char **
procstat_getargv( struct procstat *procstat, const struct kinfo_proc *kp, size_t nchr, char *errbuf);

Elf_Auxinfo *
procstat_getauxv( struct procstat *procstat, struct kinfo_proc *kp, unsigned int *count);

char **
procstat_getenvv( struct procstat *procstat, const struct kinfo_proc *kp, size_t nchr, char *errbuf);

struct filestat_list *
procstat_getfiles( struct procstat *procstat, struct kinfo_proc *kp, int mmapped);

gid_t *
procstat_getgroups( struct procstat *procstat, struct kinfo_proc *kp, unsigned int *count);

int
procstat_getosrel( struct procstat *procstat, struct kinfo_proc *kp, int *osrelp);

struct kinfo_kstack *
procstat_getkstack( struct procstat *procstat, struct kinfo_proc *kp, unsigned int *count);

struct kinfo_proc *
procstat_getprocs( struct procstat *procstat, int what, int arg, unsigned int *count);

int
procstat_getpathname( struct procstat *procstat, struct kinfo_proc *kp, char *pathname, size_t maxlen);

int
procstat_getrlimit( struct procstat *procstat, struct kinfo_proc *kp, int which, struct rlimit* rlimit);

int
procstat_getumask( struct procstat *procstat, struct kinfo_proc *kp, unsigned short *maskp);

struct kinfo_vmentry *
procstat_getvmmap( struct procstat *procstat, struct kinfo_proc *kp, unsigned int *count);

struct procstat *
procstat_open_core( const char *filename);

struct procstat *
procstat_open_kvm( const char *nlistf, const char *memf);

struct procstat *
procstat_open_sysctl( void);

解説

libprocstat ライブラリは、ランタイムファイルと sysctl(3) ライブラリバックエンドを通して実行しているカーネルからのプロセス情報検索のため、そして kvm(3) ライブラリバックエンドを通して、または特別の elf(3) の注釈セクションの統計値を検索して、プロセス core(5) ファイルからポストモーテム (post-mortem) 解析のための API を含んでいます。

procstat_open_kvm() と procstat_open_sysctl() 関数は、プロセスとファイル状態を検索するために使用されるカーネル状態情報にアクセスするために、それぞれ kvm(3) または sysctl(3) ライブラリルーチンを使用します。 procstat_open_core() は、プロセスの異常終了の瞬間にカーネルによって書き込まれる、プロセスの core(5) ファイルに 1 組の注釈として格納された統計にアクセスするために elf(3) ルーチンを使用します。 filename 引数は、プロセスのコアファイルの名前です。 nlistf 引数は、調査されるカーネルの実行形式のイメージです。この引数が NULL であるなら、現在実行しているカーネルが、想定されます。 memf 引数は、カーネルメモリデバイスファイルです。この引数が NULL であるなら、 /dev/mem が、想定されます。その他の詳細については、 kvm_open(3) を参照してください。関数は、 procstat_open_*() 関数によって割り付けられたリソースをクリアする、対応する procstat_close() が呼び出すまで、 libprocstat ライブラリルーチンの残りで使用される procstat 構造体のポインタを動的に割り付けて、返します。

procstat_getprocs() 関数は、 procstat_open_*() 関数の 1 つから procstat 構造体へのポインタを取得し、 kinfo_proc 構造体の配列に満たされたカーネルの動的に割り付けられたアクティブなプロセスの (サブ) セットを返します。 whatarg 引数は、 kvm_getprocs(3) 関数で説明されているようにフィルタリング述語を構成します。見つけられたプロセスの数は、参照パラメータ cnt に返されます。呼び出し側は、その後の procstat_freeprocs() 関数呼び出しで割り付けられたメモリを解放すること責任があります。

procstat_getargv() 関数は、 procstat_open_*() 関数の 1 つから procstat 構造体へのポインタ、 kvm_getprocs() 関数から獲得された配列から kinfo_proc 構造体へのポインタを取得し、プロセスに渡されたコマンド行引数に対応するヌル文字で終了する引数ベクトルを返します。 nchr 引数は、文字列を構築で使用するために null バイトを含む、最大の文字数を示します。この合計が超過するなら、オーバフローを引き起こす文字列は、切り捨てられ、部分的な結果が返されます。これは、コマンドの 1 つの行の要約だけを印刷し、それを無視するためにテキストのみの大量をコピーするべきでないプログラムにとって便利です。 nchr が 0 であるなら、制限は、課されず、すべての引数の文字列が返されます。返された引数ベクトルの値は、 procstat 内部バッファに格納された文字列を参照します。同じ procstat 引数がある関数の続く呼び出しは、バッファを再使用します。割り付けられたメモリを解放するために、 procstat_freeargv() 関数呼び出しを使用することができるか、または、 procstat_close() で解放されます。

procstat_getenvv() 関数は、 procstat_getargv() に似ていますが、環境文字列のベクトルを返します。呼び出し側は、続く procstat_freeenv() 関数呼出しをで割り当てられたメモリを解放します。

procstat_getauxv() 関数は、 procstat 構造体へのポインタ、 kinfo_proc 構造体へのポインタを取得して、 Elf_Auxinfo 要素の動的に割り付けられた配列として補助のベクトルを返します。呼び出し側は、続く procstat_freeauxv() 関数呼出しで割り付けられたメモリを解放するのに責任があります。

procstat_getfiles() 関数は、 procstat_open_*() 関数の 1 つで初期化された procstat 構造体へのポインタ、 kvm_getprocs() 関数から取得された配列から kinfo_proc 構造体へのポインタを取得し、 queue(3) で定義された STAILQ マクロを使用して満たされた filestat_list 構造体の動的に割り付けられたリンクされたリストを返します。呼び出し側は、その後の procstat_freefiles() 関数呼び出しで割り付けられたメモリを解放すること責任があります。

procstat_getgroups() 関数は、 procstat 構造体へのポインタ、 kinfo_proc 構造体へのポインタを取得し、 gid_t 要素の動的に割り付けられた配列としてプロセスグループを返します。呼び出し側は、その後の procstat_freegroups() 関数呼び出しで割り付けられたメモリを解放すること責任があります。

procstat_getkstack() 関数は、 procstat_open_*() 関数の 1 つで初期化される procstat 構造体へのポインタ、 kinfo_proc 構造体へのポインタを取得し、 kinfo_kstack 構造体の動的に割り付けられた配列としてプロセスのカーネルスタックを返します。呼び出し側は、その後の procstat_freekstack() 関数呼び出しで割り付けられたメモリを解放すること責任があります。

procstat_getosrel() 関数は、 procstat 構造体へのポインタ、 kinfo_proc 構造体へのポインタを取得し、3 番目の参照パラメータで osrel 日付を返します。

procstat_getpathname() 関数は、 procstat 構造体へのポインタ、 kinfo_proc 構造体へのポインタを取得し、 maxlen 文字に制限して、 pathname バッファへのプロセスの実行形式のパスをコピーします。

procstat_getrlimit() 関数は、 procstat 構造体へのポインタ、 kinfo_proc 構造体へのポインタ、リソースインデックス which を取得し、4 番目の参照パラメータで実際のリソースの制限を返します。

procstat_getumask() 関数は、 procstat 構造体へのホインタ、 kinfo_proc 構造体へのポインタを取得して、3 番目の参照パラメータでプロセスの umask を返します。

procstat_getvmmap() 関数は、 procstat_open_*() 関数の 1 つで初期化された procstat 構造体へのポインタ、 kinfo_proc 構造へのポインタを取得し、 kinfo_vmentry 構造体の動的に割り付けられた配列としてプロセスの VM レイアウトを返します。呼び出し側は、その後の procstat_freevmmap() 関数呼び出しで割り付けられたメモリを解放すること責任があります。

procstat_get_pipe_info(), procstat_get_pts_info(), procstat_get_sem_info(), procstat_get_shm_info(), procstat_get_socket_info() と procstat_get_vnode_info() 関数は、それぞれパイプ、疑似端末、セマフォ、共有メモリオブジェクト、ソケットと vnode に関する検索情報のために使用されます。それぞれのそれらには、同様のインタフェース API があります。 procstat 引数は、 procstat_open_*() 関数の 1 つから取得されたポインタです。 filestat fst 引数は、 procstat_getfiles() 関数から取得された STAILQ のリンクされたリストの要素です。 filestat 構造体は、ファイルタイプを指定する fs_type フィールドと procstat_get_*_info 関数ファミリに共通して呼び出される対応する関数を含んでいます。実際のオブジェクトは、3 番目の参照パラメータで返されます。 errbuf 引数は、失敗の場合に実際のエラーメッセージを示します。

PS_FST_TYPE_FIFO
procstat_get_vnode_info
PS_FST_TYPE_VNODE
procstat_get_vnode_info
PS_FST_TYPE_SOCKET
procstat_get_socket_info
PS_FST_TYPE_PIPE
procstat_get_pipe_info
PS_FST_TYPE_PTS
procstat_get_pts_info
PS_FST_TYPE_SEM
procstat_get_sem_info
PS_FST_TYPE_SHM
procstat_get_shm_info

歴史

libprocstat ライブラリは、 FreeBSD 9.0 で登場しました。

作者

libprocstat ライブラリは、 Stanislav Sedov <stas@FreeBSD.org>によって書かれました。

このマニュアルページは、 Sergey Kandaurov <pluknet@FreeBSD.org>によって書かれました。

May 3, 2013 FreeBSD