sg_get_user_stats, sg_get_user_stats_r, sg_free_user_stats — get the current logged in users
#include <statgrab.h>
| sg_user_stats *sg_get_user_stats( | entries ); | 
size_t *entries;| sg_user_stats *sg_get_user_stats_r( | entries ); | 
size_t *entries;| sg_error sg_free_user_stats( | data ); | 
sg_user_stats *data;
      The user statistics module delivers some information about logged on
      users. Each logon is treated separately. Both statistic get functions,
      sg_get_user_stats() and
      sg_get_user_stats_r(), return a vector of
      sg_user_stats with
      entries elements.
    
Table 1. API Shortcut
| function | returns | data owner | 
|---|---|---|
| sg_get_user_stats | sg_user_stats * | libstatgrab (thread local) | 
| sg_get_user_stats_r | sg_user_stats * | caller | 
    
      The sg_user_stats vector received from
      sg_get_user_stats_r() must be freed using
      sg_free_user_stats() when not needed any more. The
      caller is responsible for doing it.
    
The structure returned is of type sg_user_stats.
typedef struct {
        char *login_name;
        char *record_id;
        size_t record_id_size;
        char *device;
        char *hostname;
        pid_t pid;
        time_t login_time;
        time_t systime;
} sg_user_stats;
    login_nameThe username which was used to log in
record_idRecord identifier of host database containing login information (not necessarily 0-terminated)
record_id_sizeSize of the record identifier
deviceDevice name (eg. "pts/0") of the tty assigned to the login session
hostname(remote) Hostname from where the user is logged on, eg. "infoterm7.some.kind.of.domain.local", "localhost", "10.42.17.4" or ":0.0" (in case it's a local logon via new xterm)
pidProcess identifier of the process which made the entry to the logged on users database
login_timeTimestamp (time in seconds since epoch) when the user logged on
systimeThe timestamp when the above stats where collected in seconds since epoch