Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
PDFORK(2)		  FreeBSD System Calls Manual		     PDFORK(2)

NAME
     pdfork, pdgetpid, pdkill, pdwait4 -- System calls to manage process
     descriptors

LIBRARY
     Standard C	Library	(libc, -lc)

SYNOPSIS
     #include <sys/procdesc.h>

     int
     pdfork(int	*fdp, int flags);

     int
     pdgetpid(int fd, pid_t *pidp);

     int
     pdkill(int	fd, int	signum);

     int
     pdwait4(int fd, int *status, int options, struct rusage *rusage);

DESCRIPTION
     Process descriptors are special file descriptors that represent pro-
     cesses, and are created using pdfork(), a variant of fork(2), which, if
     successful, returns a process descriptor in the integer pointed to	by
     pidp.  Processes created via pdfork() will	not cause SIGCHLD on termina-
     tion.  pdfork() can accept	the flags:

     PD_DAEMON	Instead	of the default terminate-on-close behaviour, allow the
		process	to live	until it is explicitly killed with kill(2).

		This option is not permitted in	Capsicum capability mode (see
		cap_enter(2)).

     pdgetpid()	queries	the process ID (PID) if	the process descriptor fd.

     pdkill() is functionally identical	to kill(2), except that	it accepts a
     process descriptor, fd, rather than a PID.

     pdwait4() behaves identically to wait4(2),	but operates with respect to a
     process descriptor	argument rather	than a PID.

     The following system calls	also have effects specific to process descrip-
     tors:

     fstat(2) queries status of	a process descriptor; currently	only the
     st_mode, st_birthtime, 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.

     poll(2) and select(2) allow waiting for process state transitions;	cur-
     rently only POLLHUP is defined, and will be raised	when the process dies.

     close(2) will close the process descriptor	unless PD_DAEMON 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	SIGKILL.

RETURN VALUES
     pdfork() returns a	PID, 0 or -1, as fork(2) does.

     pdgetpid()	and pdkill() return 0 on success and -1	on failure.

     pdwait4() returns a PID on	success	and -1 on failure.

ERRORS
     These functions may return	the same error numbers as their	PID-based
     equivalents (e.g.	pdfork() may return the	same error numbers as
     fork(2)), with the	following additions:

     [EINVAL]		The signal number given	to pdkill() is invalid.

     [ENOTCAPABLE]	The process descriptor being operated on has insuffi-
			cient rights (e.g.  CAP_PDKILL for pdkill()).

SEE ALSO
     close(2), fork(2),	fstat(2), kill(2), poll(2), wait4(2)

HISTORY
     The pdfork(), pdgetpid(), pdkill()	and pdwait4() system calls first
     appeared in FreeBSD 9.0.

     Support for process descriptors mode was developed	as part	of the
     TrustedBSD	Project.

AUTHORS
     These functions and the capability	facility were created by Robert	N. M.
     Watson <rwatson@FreeBSD.org> and Jonathan Anderson	<jonathan@FreeBSD.org>
     at	the University of Cambridge Computer Laboratory	with support from a
     grant from	Google,	Inc.

BUGS
     pdwait4() has not yet been	implemented.

FreeBSD	10.1		       February	25, 2012		  FreeBSD 10.1

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | HISTORY | AUTHORS | BUGS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=pdfork&sektion=2&manpath=FreeBSD+9.1-RELEASE>

home | help