#include <utmpx.h>
These files, which hold user and accounting information for such commands as who, write, and login, have the following structure as defined by utmpx.h:
#define ut_name ut_user #define ut_xtime ut_tv.tv_sec
The utmpx structure includes the following members:
char ut_user[32]; /* user login name */
char ut_id[4]; /* inittab id */
char ut_line[32]; /* device name (console, lnxx) */
pid_t ut_pid; /* process id */
short ut_type; /* type of entry */
struct ut_exit_status {
short ut_e_termination; /* termination status */
short ut_e_exit; /* exit status */
} ut_exit; /* process termination/exit status */
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* and microseconds */
} ut_tv; /* time entry was made */
long ut_session; /* session ID, used for windowing */
long pad[5]; /* reserved for future use */
short ut_syslen; /* significant length of ut_host */
/* including terminating null */
char ut_host[257]; /* remote host name */
/* Definitions for ut_type */
#define EMPTY 0
#define RUN_LVL 1
#define BOOT_TIME 2
#define OLD_TIME 3
#define NEW_TIME 4
#define INIT_PROCESS 5 /* Process spawned by "init" */
#define LOGIN_PROCESS 6 /* A "getty" process waiting for login */
#define USER_PROCESS 7 /* A user process */
#define DEAD_PROCESS 8
#define UTMAXTYPE ACCOUNTING /* Largest legal value of ut_type */
/* Below are special strings or formats used in the "ut_line" */
/* field when accounting for something other than a process. */
/* No string for the ut_line field should be more than 31 chars + */
/* a null character in length. */
#define RUNLVL_MSG "run-level %c"
#define BOOT_MSG "system boot"
#define OTIME_MSG "old time"
#define NTIME_MSG "new time"
#define MOD_WIN 10
/var/adm/utmpx /var/adm/wtmpx