summaryrefslogtreecommitdiffstats
path: root/man2/setpgid.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/setpgid.2')
-rw-r--r--man2/setpgid.2190
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)