System calls to manage process descriptors
Standard C Library (libc, -lc)
Process descriptors are special file descriptors that represent processes, and
are created using
pdfork(), a variant of
which, if successful, returns a process descriptor in the integer pointed to
by fdp. Processes created via
pdfork() will not cause
SIGCHLD on termination.
pdfork() can accept the flags:
- Instead of the default terminate-on-close behaviour, allow the process to
live until it is explicitly killed with
This option is not permitted in
capability mode (see
- Set close-on-exec on process descriptor.
pdgetpid() queries the process ID (PID) in
the process descriptor fd.
pdkill() is functionally identical to
except that it accepts a process descriptor, fd,
rather than a PID.
The following system calls also have effects specific to process
queries status of a process descriptor; currently only the
st_atime, st_ctime and
st_mtime fields are defined. If the owner read, write,
and execute bits are set then the process represented by the process
descriptor is still alive.
allow waiting for process state transitions; currently only
POLLHUP is defined, and will be raised when the
process dies. Process state transitions can also be monitored using
EVFILT_PROCDESC; currently only
NOTE_EXIT is implemented.
will close the process descriptor unless
is set; if the process is still alive and this is the last reference to the
process descriptor, the process will be terminated with the signal
pdfork() returns a PID, 0 or -1, as
These functions may return the same error numbers as their PID-based equivalents
pdkill() return 0 on success and -1 on failure.
pdfork() may return the same error numbers as
with the following additions:
- The signal number given to
- The process descriptor being operated on has insufficient rights (e.g.
pdkill() system calls first appeared in
Support for process descriptors mode was developed as part of the
These functions and the capability facility were created by
Robert N. M. Watson
and Jonathan Anderson
at the University of Cambridge Computer Laboratory with support from a grant
from Google, Inc.