From 058b0118a52061ad57694c01fc8763b22b789c4d Mon Sep 17 00:00:00 2001 From: rsc Date: Mon, 3 Jan 2005 06:40:20 +0000 Subject: Some man pages. --- man/man3/rfork.3 | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 man/man3/rfork.3 (limited to 'man/man3/rfork.3') diff --git a/man/man3/rfork.3 b/man/man3/rfork.3 new file mode 100644 index 00000000..12cedda3 --- /dev/null +++ b/man/man3/rfork.3 @@ -0,0 +1,163 @@ +.TH RFORK 3 +.SH NAME +rfork \- manipulate process state +.SH SYNOPSIS +.B #include +.br +.B #include +.PP +.nf +.B +int rfork(int flags) +.fi +.SH DESCRIPTION +.I Rfork +is a partial implementation of the Plan 9 system call. +It can be used to manipulate some process state and to create +new processes a la +.IR fork (2). +It cannot be used to create shared-memory processes +(Plan 9's +.B RFMEM +flag); for that functionality use +.I proccreate +(see +.IR thread (3)). +.PP +The +.I flags +argument to +.I rfork +selects which resources of the +invoking process (parent) are shared +by the new process (child) or initialized to +their default values. +.I Flags +is the logical OR of some subset of +.TF RFCNAMEG +.TP +.B RFPROC +If set a new process is created; otherwise changes affect the +current process. +.TP +.B RFNOWAIT +If set, the child process will be dissociated from the parent. Upon +exit the child will leave no +.B Waitmsg +(see +.IR wait (3)) +for the parent to collect. +.\" .TP +.\" .B RFNAMEG +.\" If set, the new process inherits a copy of the parent's name space; +.\" otherwise the new process shares the parent's name space. +.\" Is mutually exclusive with +.\" .BR RFCNAMEG . +.\" .TP +.\" .B RFCNAMEG +.\" If set, the new process starts with a clean name space. A new +.\" name space must be built from a mount of an open file descriptor. +.\" Is mutually exclusive with +.\" .BR RFNAMEG . +.\" .TP +.\" .B RFNOMNT +.\" If set, subsequent mounts into the new name space and dereferencing +.\" of pathnames starting with +.\" .B # +.\" are disallowed. +.\" .TP +.\" .B RFENVG +.\" If set, the environment variables are copied; +.\" otherwise the two processes share environment variables. +.\" Is mutually exclusive with +.\" .BR RFCENVG . +.\" .TP +.\" .B RFCENVG +.\" If set, the new process starts with an empty environment. +.\" Is mutually exclusive with +.\" .BR RFENVG . +.TP +.B RFNOTEG +Each process is a member of a group of processes that all +receive notes when a note is sent to the group +(see +.IR postnote (3) +and +.IR signal (2)). +The group of a new process is by default the same as its parent, but if +.B RFNOTEG +is set (regardless of +.BR RFPROC ), +the process becomes the first in a new group, isolated from +previous processes. +In Plan 9, a process can call +.B rfork(RFNOTEG) +and then be sure that it will no longer receive console interrupts +or other notes. +Unix job-control shells put each command in its own process group +and then relay notes to the current foreground command, making +the idiom less useful. +.TP +.B RFFDG +If set, the invoker's file descriptor table (see +.IR intro ( )) +is copied; otherwise the two processes share a +single table. +.\" .TP +.\" .B RFCFDG +.\" If set, the new process starts with a clean file descriptor table. +.\" Is mutually exclusive with +.\" .BR RFFDG . +.\" .TP +.\" .B RFREND +.\" If set, the process will be unable to +.\" .IR rendezvous (3) +.\" with any of its ancestors; its children will, however, be able to +.\" .B rendezvous +.\" with it. In effect, +.\" .B RFREND +.\" makes the process the first in a group of processes that share a space for +.\" .B rendezvous +.\" tags. +.\" .TP +.\" .B RFMEM +.\" If set, the child and the parent will share +.\" .B data +.\" and +.\" .B bss +.\" segments. +.\" Otherwise, the child inherits a copy of those segments. +.\" Other segment types, in particular stack segments, will be unaffected. +.\" May be set only with +.\" .BR RFPROC . +.PD +.PP +File descriptors in a shared file descriptor table are kept +open until either they are explicitly closed +or all processes sharing the table exit. +.PP +If +.B RFPROC +is set, the +value returned in the parent process +is the process id +of the child process; the value returned in the child is zero. +Without +.BR RFPROC , +the return value is zero. +Process ids range from 1 to the maximum integer +.RB ( int ) +value. +.I Rfork +will sleep, if necessary, until required process resources are available. +.PP +Calling +.B rfork(RFFDG|RFPROC) +is equivalent to calling +.IR fork (2). +.SH SOURCE +.B /usr/local/plan9/src/lib9/rfork.c +.SH DIAGNOSTICS +.I Rfork +sets +.IR errstr . -- cgit v1.2.3