diff options
Diffstat (limited to 'man2/setpgid.2')
-rw-r--r-- | man2/setpgid.2 | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/man2/setpgid.2 b/man2/setpgid.2 new file mode 100644 index 000000000..2567ee2a1 --- /dev/null +++ b/man2/setpgid.2 @@ -0,0 +1,190 @@ +.\" Copyright (c) 1983, 1991 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)getpgrp.2 6.4 (Berkeley) 3/10/91 +.\" +.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu> +.\" Modified 1995-04-15 by Michael Chastain <mec@shell.portal.com>: +.\" Added 'getpgid'. +.\" Modified 1996-07-21 by Andries Brouwer <aeb@cwi.nl> +.\" Modified 1996-11-06 by Eric S. Raymond <esr@thyrsus.com> +.\" Modified 1999-09-02 by Michael Haardt <michael@moria.de> +.\" Modified 2002-01-18 by Michael Kerrisk <mtk16@ext.canterbury.ac.nz> +.\" Modified 2003-01-20 by Andries Brouwer <aeb@cwi.nl> +.\" +.TH SETPGID 2 2003-01-20 "Linux" "Linux Programmer's Manual" +.SH NAME +setpgid, getpgid, setpgrp, getpgrp \- set/get process group +.SH SYNOPSIS +.B #include <unistd.h> +.sp +.BI "int setpgid(pid_t " pid ", pid_t " pgid ); +.br +.BI "pid_t getpgid(pid_t " pid ); +.br +.B int setpgrp(void); +.br +.B pid_t getpgrp(void); +.SH DESCRIPTION +.B setpgid +sets the process group ID of the process specified by +.I pid +to +.IR pgid . +If +.I pid +is zero, the process ID of the current process is used. If +.I pgid +is zero, the process ID of the process specified by +.I pid +is used. If \fBsetpgid\fP is used to move a process from one process +group to another (as is done by some shells when creating pipelines), +both process groups must be part of the same session. In this case, +the \fIpgid\fP specifies an existing process group to be joined and the +session ID of that group must match the session ID of the joining process. + +.B getpgid +returns the process group ID of the process specified by +.IR pid . +If +.I pid +is zero, the process ID of the current process is used. + +The call +.B setpgrp() +is equivalent to +.BR setpgid(0,0) . + +Similarly, +.B getpgrp() +is equivalent to +.BR getpgid(0) . +Each process group is a member of a session and each process is a +member of the session of which its process group is a member. + +Process groups are used for distribution of signals, and by terminals to +arbitrate requests for their input: Processes that have the same process +group as the terminal are foreground and may read, while others will +block with a signal if they attempt to read. +These calls are thus used by programs such as +.BR csh (1) +to create process groups in implementing job control. The +.B TIOCGPGRP +and +.B TIOCSPGRP +calls described in +.BR termios (3) +are used to get/set the process group of the control terminal. + +If a session has a controlling terminal, CLOCAL is not set and a hangup +occurs, then the session leader is sent a SIGHUP. If the session leader +exits, the SIGHUP signal will be sent to each process in the foreground +process group of the controlling terminal. + +If the exit of the process causes a process group to become orphaned, +and if any member of the newly-orphaned process group is stopped, then a +SIGHUP signal followed by a SIGCONT signal will be sent to each process +in the newly-orphaned process group. + +.SH "RETURN VALUE" +On success, +.BR setpgid " and " setpgrp +return zero. On error, \-1 is returned, and +.I errno +is set appropriately. + +.B getpgid +returns a process group on success. +On error, \-1 is returned, and +.I errno +is set appropriately. + +.B getpgrp +always returns the current process group. +.SH ERRORS +.TP +.B EACCES +An attempt was made to change the process group ID +of one of the children of the calling process and the child had +already performed an \fBexecve\fP +(\fBsetpgid\fP, \fBsetpgrp\fP). +.TP +.B EINVAL +.I pgid +is less than 0 +(\fBsetpgid\fP, \fBsetpgrp\fP). +.TP +.B EPERM +An attempt was made to move a process into a process group in a +different session, or to change the process +group ID of one of the children of the calling process and the +child was in a different session, or to change the process group ID of +a session leader +(\fBsetpgid\fP, \fBsetpgrp\fP). +.TP +.B ESRCH +For +.BR getpgid : +.I pid +does not match any process. +For +.BR setpgid : +.I pid +is not the current process and not a child of the current process. +.SH "CONFORMING TO" +The functions +.B setpgid +and +.B getpgrp +conform to POSIX.1. +The function +.B setpgrp +is from BSD 4.2. +The function +.B getpgid +conforms to SVr4. +.SH NOTES +POSIX took +.B setpgid +from the BSD function +.BR setpgrp . +Also SysV has a function with the same name, but it is identical to +.BR setsid (2). +.LP +To get the prototypes under glibc, define both _XOPEN_SOURCE and +_XOPEN_SOURCE_EXTENDED, or use "#define _XOPEN_SOURCE \fIn\fP" +for some integer \fIn\fP larger than or equal to 500. +.SH "SEE ALSO" +.BR getuid (2), +.BR setsid (2), +.BR tcgetpgrp (3), +.BR tcsetpgrp (3), +.BR termios (3) |