It is very common to require a proccess listing… I dont believe there is a portable way to do this. (glib seems to try to address this problem but it goes the hard way). Probably the most portable way to get a process list is to parse the output of the `ps’ program.

libproclist will run ps with the apropriate arguments and parse its output to get the process listing.

It seems to work for: Linux, IRIX, Solaris, AIX and OpenBSD.

This will *NOT* work for FreeBSD since the ps command does *NOT* return the effective uid and gid of a process.


The installation is as simple as `configure’, `make’ and `make install’.

The interface of the library is:

struct pl_procinfo
        pid_t   pid;
        pid_t   ppid;
        uid_t   euid;
        gid_t   egid;
        char    *tty;
        char    *cmd;

struct pl_procinfo       **pl_proclist;
int                      pl_proclist_count;

        Get the process list.
                -1: Internal error
                0: Error executing ps
                >0: Number of processes
int     pl_get_proclist();

Just call pl_get_proclist() and it will allocate the pl_proclist table which will contain pl_proclist_count elements. Each element is a process.




libproclist is licensed under the GPLv2