/proc は、起動中のプロセスについての情報が取得できる仮想ファイルシステム。psinfo 構造体にキャストして使う形式なので、Linux のように cat などで出力しても読めない。ps(1) がプロセスの情報を得るために /proc を読んでいる。
usr/src/uts/common/sys/procfs.h で定義されている。
/*
* process ps(1) information file. /proc/<pid>/psinfo
*/
#define PRARGSZ 80 /* 引数の最大文字数 */
#define PRFNSZ 16 /* 実行ファイル名の最大文字数 */
typedef struct psinfo {
int pr_flag; /* プロセスフラグ (廃止予定) */
int pr_nlwp; /* プロセス中のアクティブな lwp 数 */
pid_t pr_pid; /* プロセス ID */
pid_t pr_ppid; /* 親プロセス ID */
pid_t pr_pgid; /* プロセスグループリーダのプロセスID */
pid_t pr_sid; /* セッション ID */
uid_t pr_uid; /* リアルユーザ ID */
uid_t pr_euid; /* 実効ユーザ ID */
gid_t pr_gid; /* リアルグループ ID */
gid_t pr_egid; /* 実効グループ ID */
uintptr_t pr_addr; /* アドレス */
size_t pr_size; /* プロセスイメージサイズ(Kbyte) */
size_t pr_rssize; /* 物理メモリ使用量(Kbyte) */
size_t pr_pad1;
dev_t pr_ttydev; /* controlling tty device (or PRNODEV) */
/* The following percent numbers are 16-bit binary */
/* fractions [0 .. 1] with the binary point to the */
/* right of the high-order bit (1.0 == 0x8000) */
ushort_t pr_pctcpu; /* CPU 使用時間(%) */
ushort_tpr_pctmem; /* 仮想メモリ使用量(%) */
timestruc_t pr_start; /* プロセス生成時刻(epoch秒) */
timestruc_t pr_time; /* CPU 使用時間(usr+sys) */
timestruc_t pr_ctime; /* 子プロセスの CPU 使用時間(usr+sys) */
char pr_fname[PRFNSZ]; /* 実行ファイル名 */
char pr_psargs[PRARGSZ]; /* 引数リスト */
int pr_wstat; /* wait() の状態(ゾンビ状態の場合) */
int pr_argc; /* 引数の数 */
uintptr_t pr_argv; /* 引数ベクターアドレス */
uintptr_t pr_envp; /* 環境変数ベクターアドレス */
char pr_dmodel; /* data model of the process */
char pr_pad2[3];
taskid_t pr_taskid; /* タスク ID */
projid_t pr_projid; /* プロジェクト ID */
int pr_nzomb; /* ゾンビ lwp の数 */
poolid_t pr_poolid; /* リソースプール ID */
zoneid_t pr_zoneid; /* zone ID */
id_t pr_contract; /* process contract */
int pr_filler[1]; /* reserved for future use */
lwpsinfo_t pr_lwp; /* information for representative lwp */
} psinfo_t;
0 件のコメント:
コメントを投稿