]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man2/setpgid.2
fanotify.7: tfix
[thirdparty/man-pages.git] / man2 / setpgid.2
index 3afe606d4da4d4c798f17af5ee68639139c668f8..be451e7653097041f3beceaa097cd9adc7ac71ce 100644 (file)
@@ -1,6 +1,8 @@
 .\" Copyright (c) 1983, 1991 Regents of the University of California.
+.\" and Copyright (C) 2007, Michael Kerrisk <mtk.manpages@gmail.com>
 .\" All rights reserved.
 .\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
 .\" are met:
@@ -28,6 +30,7 @@
 .\" 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.
+.\" %%%LICENSE_END
 .\"
 .\"     @(#)getpgrp.2  6.4 (Berkeley) 3/10/91
 .\"
 .\" 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 <mtk-manpages@gmx.net>
+.\" Modified 2002-01-18 by Michael Kerrisk <mtk.manpages@gmail.com>
 .\" Modified 2003-01-20 by Andries Brouwer <aeb@cwi.nl>
 .\" 2007-07-25, mtk, fairly substantial rewrites and rearrangements
 .\" of text.
 .\"
-.TH SETPGID 2 2007-07-26 "Linux" "Linux Programmer's Manual"
+.TH SETPGID 2 2017-09-15 "Linux" "Linux Programmer's Manual"
 .SH NAME
 setpgid, getpgid, setpgrp, getpgrp \- set/get process group
 .SH SYNOPSIS
+.B #include <sys/types.h>
+.br
 .B #include <unistd.h>
-.sp
+.PP
 .BI "int setpgid(pid_t " pid ", pid_t " pgid );
 .br
 .BI "pid_t getpgid(pid_t " pid );
-.sp
-.BR "pid_t getpgrp(void);" "                /* POSIX.1 version */"
+.PP
+.BR "pid_t getpgrp(void);" "                 /* POSIX.1 version */"
 .br
-.BI "pid_t getpgrp(psid_t " pid ");\ \ \ \ \ \ \ \ \ "
+.BI "pid_t getpgrp(pid_t " pid ");\ \ \ \ \ \ \ \ \ \ \ "
 /* BSD version */
-.sp
-.BR "int setpgrp(void);" "                  /* System V version */"
+.PP
+.BR "int setpgrp(void);" "                   /* System V version */"
 .br
-.BI "int setpgrp(pid_t " pid ", pid_t " pgid );
+.BI "int setpgrp(pid_t " pid ", pid_t " pgid ");\ "
 /* BSD version */
-.sp
+.PP
 .in -4n
 Feature Test Macro Requirements for glibc (see
 .BR feature_test_macros (7)):
 .in
-.sp
+.PP
 .ad l
 .BR getpgid ():
+.RS 4
 _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .br
-.BR setpgrp ()
-(POSIX.1): _SVID_SOURCE || _XOPEN_SOURCE >= 500
-.sp
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+.RE
+.PP
+.BR setpgrp "() (POSIX.1):"
+.nf
+    _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+        || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+        || /* Glibc versions <= 2.19: */ _SVID_SOURCE
+.fi
+.PP
 .BR setpgrp "()\ (BSD),"
 .BR getpgrp "()\ (BSD):"
-_BSD_SOURCE && !\ (_POSIX_SOURCE || _POSIX_C_SOURCE ||
-_XOPEN_SOURCE || _XOPEN_SOURCE_EXTENDED || _GNU_SOURCE || _SVID_SOURCE)
-.ad b
+.nf
+    [These are available only before glibc 2.19]
+    _BSD_SOURCE &&
+        !\ (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE ||
+            _GNU_SOURCE || _SVID_SOURCE)
+.fi
+.ad
 .SH DESCRIPTION
 All of these interfaces are available on Linux,
 and are used for getting and setting the
@@ -88,7 +107,7 @@ The preferred, POSIX.1-specified ways of doing this are:
 for retrieving the calling process's PGID; and
 .BR setpgid (),
 for setting a process's PGID.
-
+.PP
 .BR setpgid ()
 sets the PGID of the process specified by
 .I pid
@@ -96,12 +115,12 @@ to
 .IR pgid .
 If
 .I pid
-is zero, the process ID of the current process is used.
+is zero, then the process ID of the calling process is used.
 If
 .I pgid
-is zero, the process ID of the process specified by
+is zero, then the PGID of the process specified by
 .I pid
-is used.
+is made the same as its process ID.
 If
 .BR setpgid ()
 is used to move a process from one process
@@ -113,47 +132,68 @@ and
 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.
-
+.PP
 The POSIX.1 version of
 .BR getpgrp (),
 which takes no arguments,
 returns the PGID of the calling process.
-
+.PP
 .BR getpgid ()
 returns the PGID of the process specified by
 .IR pid .
 If
 .I pid
-is zero, the process ID of the current process is used.
+is zero, the process ID of the calling process is used.
 (Retrieving the PGID of a process other than the caller is rarely
 necessary, and the POSIX.1
 .BR getpgrp ()
 is preferred for that task.)
-
-The System V-style
+.PP
+The System\ V-style
 .BR setpgrp (),
 which takes no arguments, is equivalent to
 .IR "setpgid(0,\ 0)" .
-
+.PP
 The BSD-specific
 .BR setpgrp ()
 call, which takes arguments
 .I pid
 and
 .IR pgid ,
-is equivalent to
-.IR "setpgid(pid, pgid)" .
+is a wrapper function that calls
+.PP
+    setpgid(pid, pgid)
+.PP
 .\" The true BSD setpgrp() system call differs in allowing the PGID
 .\" to be set to arbitrary values, rather than being restricted to
 .\" PGIDs in the same session.
-
+Since glibc 2.19, the BSD-specific
+.BR setpgrp ()
+function is no longer exposed by
+.IR <unistd.h> ;
+calls should be replaced with the
+.BR setpgid ()
+call shown above.
+.PP
 The BSD-specific
 .BR getpgrp ()
 call, which takes a single
 .I pid
-argument, is equivalent to
-.IR "getpgid(pid)" .
-.SH "RETURN VALUE"
+argument, is a wrapper function that calls
+.PP
+    getpgid(pid)
+.PP
+Since glibc 2.19, the BSD-specific
+.BR getpgrp ()
+function is no longer exposed by
+.IR <unistd.h> ;
+calls should be replaced with calls to the POSIX.1
+.BR getpgrp ()
+which takes no arguments (if the intent is to obtain the caller's PGID),
+or with the
+.BR getpgid ()
+call shown above.
+.SH RETURN VALUE
 On success,
 .BR setpgid ()
 and
@@ -162,11 +202,11 @@ return zero.
 On error, \-1 is returned, and
 .I errno
 is set appropriately.
-
+.PP
 The POSIX.1
 .BR getpgrp ()
 always returns the PGID of the caller.
-
+.PP
 .BR getpgid (),
 and the BSD-specific
 .BR getpgrp ()
@@ -207,20 +247,23 @@ 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"
+is not the calling process and not a child of the calling process.
+.SH CONFORMING TO
 .BR setpgid ()
 and the version of
 .BR getpgrp ()
-with no argumennts
+with no arguments
 conform to POSIX.1-2001.
-
+.PP
 POSIX.1-2001 also specifies
 .BR getpgid ()
 and the version of
 .BR setpgrp ()
 that takes no arguments.
-
+(POSIX.1-2008 marks this
+.BR setpgrp ()
+specification as obsolete.)
+.PP
 The version of
 .BR getpgrp ()
 with one argument and the version of
@@ -233,10 +276,12 @@ A child created via
 inherits its parent's process group ID.
 The PGID is preserved across an
 .BR execve (2).
-
+.PP
 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.
-
+(See
+.BR credentials (7).)
+.PP
 A session can have a controlling terminal.
 At any time, one (and only one) of the process groups
 in the session can be the foreground process group
@@ -254,8 +299,8 @@ Only the foreground process group may
 from the terminal;
 if a background process group tries to
 .BR read (2)
-from the terminal, then the group is send a
-.BR SIGTSTP
+from the terminal, then the group is sent a
+.B SIGTTIN
 signal, which suspends it.
 The
 .BR tcgetpgrp (3)
@@ -263,7 +308,7 @@ and
 .BR tcsetpgrp (3)
 functions are used to get/set the foreground
 process group of the controlling terminal.
-
+.PP
 The
 .BR setpgid ()
 and
@@ -271,27 +316,24 @@ and
 calls are used by programs such as
 .BR bash (1)
 to create process groups in order to implement shell job control.
-
-If a session has a controlling terminal, and the
-.B CLOCAL
-flag for that terminal is not set,
-and a terminal hangup occurs, then the session leader is sent a
-.BR SIGHUP .
-If the session leader exits, then a
-.B SIGHUP
-signal will also 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,
+.PP
+If the termination of a process causes a process group to become orphaned,
 and if any member of the newly orphaned process group is stopped, then a
 .B SIGHUP
 signal followed by a
 .B SIGCONT
 signal will be sent to each process
 in the newly orphaned process group.
-.SH "SEE ALSO"
+.\" exit.3 refers to the following text:
+An orphaned process group is one in which the parent of
+every member of process group is either itself also a member
+of the process group or is a member of a process group
+in a different session (see also
+.BR credentials (7)).
+.SH SEE ALSO
 .BR getuid (2),
 .BR setsid (2),
 .BR tcgetpgrp (3),
 .BR tcsetpgrp (3),
-.BR termios (3)
+.BR termios (3),
+.BR credentials (7)