PROC_WALK(3PROC) Process Control Library Functions PROC_WALK(3PROC)

NAME


proc_walk - walk all processes or threads in /proc

LIBRARY


Process Control Library (libproc, -lproc)

SYNOPSIS


#include <libproc.h>

int
proc_walk(proc_walk_f *func, void *arg, int flag);

DESCRIPTION


The proc_walk() function walks all threads and processes in /proc and calls
the callback function func once for each one with the user specified arg.
The definition of the proc_walk_f is available in libproc(3LIB).

func will be called once for each process and will always have its first
argument filled in with the value of the psinfo file of the process. The
value of flag controls whether or not information about the threads in the
process are included and how many times the callback function func is
called. The following values may be passed in for flag:

PR_WALK_PROC Indicates that the walker is only concerned with the
process. func will be called once for each process in
the system. Only the psinfo will be read for the
process and passed to func. The second argument, the
one for the lwpsinfo_t, will be passed as NULL.

PR_WALK_LWP The caller wants both process and thread information.
func will be called once for each thread in the system.
In addition to the process psinfo information, the ps
specific information for a given thread will be
included in the lwpsinfo_t argument.

In addition, the following values may be combined with one of the above
values of flag with a bitwise-inclusive-OR:

PR_WALK_INCLUDE_SYS
Include SYS (system) processes. Normally SYS processes
are skipped during the walk of the process tree.

The return value of the caller's func function determines whether or not
iteration will continue. If func returns a non-zero value, then iteration
will terminate and that return value will be returned to the caller. To
distinguish between system errors and caller errors, it is recommended that
the function only return positive integers in the event of an error.

RETURN VALUES


Upon successful completion, the proc_walk() function returns 0. Otherwise,
-1 is returned and errno is updated to reflect the error that occurred.

ERRORS


In addition to the errors listed below, the proc_walk() function may fail
for the same reasons as the opendir(3C), readdir(3C), and malloc(3C)
functions.

EINVAL flag is not one of PR_WALK_PROC or PR_WALK_LWP.

INTERFACE STABILITY


Uncommitted

MT-LEVEL
MT-Safe

SEE ALSO


malloc(3C), opendir(3C), readdir(3C), libproc(3LIB), proc(5)

illumos November 27, 2023 illumos