Other Alias
sg_get_process_stats, sg_get_process_count, sg_process_compare_name, sg_process_compare_pid, sg_process_compare_uid, sg_process_compare_gid, sg_process_compare_size, sg_process_compare_cpu, sg_process_compare_timeSYNOPSIS
#include <statgrab.h>
sg_process_stats *sg_get_process_stats(int *entries);
sg_process_count *sg_get_process_count(void);
int sg_process_compare_name(const void *va, const void *vb);
int sg_process_compare_pid(const void *va, const void *vb);
int sg_process_compare_uid(const void *va, const void *vb);
int sg_process_compare_gid(const void *va, const void *vb);
int sg_process_compare_size(const void *va, const void *vb);
int sg_process_compare_res(const void *va, const void *vb);
int sg_process_compare_cpu(const void *va, const void *vb);
int sg_process_compare_time(const void *va, const void *vb);
DESCRIPTION
The sg_get_process_stats takes a pointer to an int, entries, which is filled with the number of processes the snapshot contains. The return value is a pointer to the first member of an array of sg_process_stats structures; the number of entries in the array is returned in entries.sg_get_process_count returns a pointer to a static buffer of type sg_process_count.
These two functions provide information on the process running on the system. In the first case lots of detail is provided, and in the second case a summary of the states of the current processes.
sg_process_compare_name
sg_process_compare_pid
sg_process_compare_uid
sg_process_compare_gid
sg_process_compare_size
sg_process_compare_res
sg_process_compare_cpu
sg_process_compare_time
These functions compare two sg_process_stats entries, and return an int to represent which one is greater. The main use of these functions is to be passed to qsort to sort the sg_process_stats by the given type.
For example:
qsort(sg_process_stats ps, int ps_size, sizeof *ps, sg_process_compare_pid);
RETURN VALUES
The structure returned by sg_get_process_stats is of type sg_process_stats.
typedef struct {
        char *process_name;
        char *proctitle;
        pid_t pid;
        pid_t parent; /* Parent pid */
        pid_t pgid;   /* process id of process group leader */
        uid_t uid;
        uid_t euid;
        gid_t gid;
        gid_t egid;
        unsigned long long proc_size; /* in bytes */
        unsigned long long proc_resident; /* in bytes */
        time_t time_spent; /* time running in seconds */
        double cpu_percent;
        int nice;
        sg_process_state state;
} sg_process_stats;
    
typedef enum {
        SG_PROCESS_STATE_RUNNING,
        SG_PROCESS_STATE_SLEEPING,
        SG_PROCESS_STATE_STOPPED,
        SG_PROCESS_STATE_ZOMBIE,
        SG_PROCESS_STATE_UNKNOWN
} sg_process_state;
    
- process_name
- The name of the command that was run.
- proctitle
- The command line (the "title") of the process. Take note - this can be modified by the process, so isn't guaranteed to be the original command line.
- pid
- The process ID.
- parent
- The parent process ID.
- pgid
- The process ID of the process group leader.
- uid
- The UID the process is running as.
- euid
- The effective UID the process is running as.
- gid
- The GID the process is running as.
- egid
- The effective GID the process is running as.
- proc_size
- The size of the process in bytes.
- proc_resident
- The size of the process that's resident in memory.
- time_spent
- The number of seconds the process has been running.
- cpu_percent
- The current percentage of CPU the process is using.
- nice
- The nice value of the process.
- state
- The current state of the process. See sg_process_state for permitted values.
The structure returned by sg_get_process_count is of type sg_process_count.
typedef struct{
        int total;
        int running;
        int sleeping;
        int stopped;
        int zombie;
}sg_process_count;
    
- total
- The total number of processes.
- running
- The number of running processes.
- sleeping
- The number of sleeping processes.
- stopped
- The number of stopped processes.
- zombie
- The number of zombie processes.

