Next: , Previous: Manipulating the Database, Up: User Accounting Database


29.12.2 XPG User Accounting Database Functions

These functions, described in the X/Open Portability Guide, are declared in the header file utmpx.h.

— Data Type: struct utmpx

The utmpx data structure contains at least the following members:

short int ut_type
Specifies the type of login; one of EMPTY, RUN_LVL, BOOT_TIME, OLD_TIME, NEW_TIME, INIT_PROCESS, LOGIN_PROCESS, USER_PROCESS or DEAD_PROCESS.
pid_t ut_pid
The process ID number of the login process.
char ut_line[]
The device name of the tty (without /dev/).
char ut_id[]
The inittab ID of the process.
char ut_user[]
The user's login name.
struct timeval ut_tv
Time the entry was made. For entries of type OLD_TIME this is the time when the system clock changed, and for entries of type NEW_TIME this is the time the system clock was set to.
In the GNU C Library, struct utmpx is identical to struct utmp except for the fact that including utmpx.h does not make visible the declaration of struct exit_status.

The following macros are defined for use as values for the ut_type member of the utmpx structure. The values are integer constants and are, in the GNU C Library, identical to the definitions in utmp.h.

EMPTY
This macro is used to indicate that the entry contains no valid user accounting information.


RUN_LVL
This macro is used to identify the systems runlevel.


BOOT_TIME
This macro is used to identify the time of system boot.


OLD_TIME
This macro is used to identify the time when the system clock changed.


NEW_TIME
This macro is used to identify the time after the system changed.


INIT_PROCESS
This macro is used to identify a process spawned by the init process.


LOGIN_PROCESS
This macro is used to identify the session leader of a logged in user.


USER_PROCESS
This macro is used to identify a user process.


DEAD_PROCESS
This macro is used to identify a terminated process.

The size of the ut_line, ut_id and ut_user arrays can be found using the sizeof operator.

— Function: void setutxent (void)

Preliminary: | MT-Unsafe race:utent | AS-Unsafe lock | AC-Unsafe lock fd | See POSIX Safety Concepts.

This function is similar to setutent. In the GNU C Library it is simply an alias for setutent.

— Function: struct utmpx * getutxent (void)

Preliminary: | MT-Unsafe init race:utent sig:ALRM timer | AS-Unsafe heap lock | AC-Unsafe lock fd mem | See POSIX Safety Concepts.

The getutxent function is similar to getutent, but returns a pointer to a struct utmpx instead of struct utmp. In the GNU C Library it simply is an alias for getutent.

— Function: void endutxent (void)

Preliminary: | MT-Unsafe race:utent | AS-Unsafe lock | AC-Unsafe lock | See POSIX Safety Concepts.

This function is similar to endutent. In the GNU C Library it is simply an alias for endutent.

— Function: struct utmpx * getutxid (const struct utmpx *id)

Preliminary: | MT-Unsafe init race:utent sig:ALRM timer | AS-Unsafe lock heap | AC-Unsafe lock mem fd | See POSIX Safety Concepts.

This function is similar to getutid, but uses struct utmpx instead of struct utmp. In the GNU C Library it is simply an alias for getutid.

— Function: struct utmpx * getutxline (const struct utmpx *line)

Preliminary: | MT-Unsafe init race:utent sig:ALRM timer | AS-Unsafe heap lock | AC-Unsafe lock fd mem | See POSIX Safety Concepts.

This function is similar to getutid, but uses struct utmpx instead of struct utmp. In the GNU C Library it is simply an alias for getutline.

— Function: struct utmpx * pututxline (const struct utmpx *utmp)

Preliminary: | MT-Unsafe race:utent sig:ALRM timer | AS-Unsafe lock | AC-Unsafe lock fd | See POSIX Safety Concepts.

The pututxline function is functionally identical to pututline, but uses struct utmpx instead of struct utmp. In the GNU C Library, pututxline is simply an alias for pututline.

— Function: int utmpxname (const char *file)

Preliminary: | MT-Unsafe race:utent | AS-Unsafe lock heap | AC-Unsafe lock mem | See POSIX Safety Concepts.

The utmpxname function is functionally identical to utmpname. In the GNU C Library, utmpxname is simply an alias for utmpname.

You can translate between a traditional struct utmp and an XPG struct utmpx with the following functions. In the GNU C Library, these functions are merely copies, since the two structures are identical.

— Function: int getutmp (const struct utmpx *utmpx, struct utmp *utmp)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

getutmp copies the information, insofar as the structures are compatible, from utmpx to utmp.

— Function: int getutmpx (const struct utmp *utmp, struct utmpx *utmpx)

Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.

getutmpx copies the information, insofar as the structures are compatible, from utmp to utmpx.