Linux中utmp結構定義如下:
structutmp
{
short int ut_type; // 登錄類型
pid_t ut_pid; // login進程的pid
char ut_line[UT_LINE_SIZE]; // 登錄裝置名,省略了"/dev/"
char ut_id[4]; // Inittab ID
char ut_user[UT_NAMESIZE]; // 登錄賬號
char ut_host[UT_HOSTSIZE]; // 登錄賬號的遠程主機名稱
struct exit_status ut_exit; // 當類型為DEAD_PROCESS時進程的結束狀態
long int ut_session; // SessionID
struct timeval ut_tv; // 時間記錄
int32_t ut_addr_v6[4]; // 遠程主機的網路地址
char __unused[20]; // 保留未使用
};
ut_type有以下幾種類型:
EMPTY | 此為空的記錄 |
RUN_LVL | 記錄系統run-level的改變 |
BOOT_TIME | 記錄系統開機時間 |
NEW_TIME | 記錄系統時間改變後的時間 |
OLD_TIME | 記錄當改變系統時間時的時間 |
INIT_PROCESS | 記錄一個由init衍生出來的進程 |
LOGIN_PROCESS | 記錄login進程 |
USER_PROCESS | 記錄一般進程 |
DEAD_PROSESS | 記錄一結束的進程 |
ACCOUNTING | 目前尚未被使用 |
exit_status結構定義:
structexit_status
{
short int e_termination; //進程結束狀態
short int e_exit; //進程退出狀態
};