getpgrp(2) getpgrp(2)
NAME
getpgrp, setpgrp, getpgid - get/set process group
SYNOPSIS (SYSV)
#include <sys/types.h>
pid_t getpgrp ()
pid_t setpgrp ()
SYNOPSIS (BSD)
#include <sys/types.h>
pid_t getpgrp (pid)
pid_t pid;
pid_t setpgrp (pid, pgrp)
pid_t pid, pgrp;
SYNOPSIS
pid_t getpgid (pid)
pid_t pid;
DESCRIPTION
These services get and set the process group ID of a pro-
cess.
In the att universe they apply to the calling process only.
getpgrp returns the process group ID of the caller. Setpgrp
sets the process group ID of the caller to his process ID
and returns the new process group ID. It also has the side
effect of relinquishing the controlling terminal, creating a
new session and making the calling process the session
leader. See setsid (2).
In the ucb universe they apply to process pid, with a pid of
zero refering to the caller. getpgrp returns the process
group ID of the specified process. Setpgrp sets the process
group ID of the specified process to the value in pgrp.
Setpgrp adheres to the POSIX rules regarding the setting of
process groups. See setpgid (2).
Getpgid is equivalent to the ucb universe flavor of getpgrp,
but is available from either universe.
Process groups are used for distribution of signals, and by
terminals to arbitrate requests for their input: processes
which have the same process group as the terminal are fore-
ground and may read, while others will block with a signal
if they attempt to read.
Page 1 CX/UX Programmer's Reference Manual
getpgrp(2) getpgrp(2)
This call is thus used by programs such as csh(1) to create
process groups in implementing job control. The TIOCGPGRP
and TIOCSPGRP calls described in sgtty(7) are used to
get/set the process group of the control terminal, as are
the TC_PX_GETPGRP and TC_PX_SETPGRP calls described in ter-
mios(7).
RETURN VALUE
If an error occurs, the value -1 is returned, and a more
precise error code is placed in the global variable errno.
If the call succeeds, then getpgrp and getpgid return the
process group ID, setpgrp in the att universe returns the
new process group ID, and setpgrp in the ucb universe
returns 0.
ERRORS
getpgrp and getpgid will fail if one of the following occur:
[ESRCH] The value of the pid argument does not match
the process ID of the calling process or of a
child process of the calling process.
Setpgrp will fail and the process group will not be altered
if one of the following occur:
[EACCES] The value of the pid argument matches the
process ID of a child process of the calling
process and the child process has success-
fully executed one of the exec() functions.
[EINVAL] The value of the pgid argument is less than
zero or is not a value supported by the
implementation.
[EPERM] The process indicated by the pid argument is
a session leader.
The value of the pid argument is valid but
matches the process ID of a child process of
the calling process and the child process is
not in the same session as the calling pro-
cess.
The value of the pgid argument does not match
the process ID of the process indicated by
the pid argument and there is no process with
a process group ID that matches the value of
the pgid argument in the same session as the
calling process.
[ESRCH] The value of the pid argument does not match
the process ID of the calling process or of a
Page 2 CX/UX Programmer's Reference Manual
getpgrp(2) getpgrp(2)
child process of the calling process.
SEE ALSO
exec(2), fork(2), getpid(2), getuid(2), intro(2), kill(2),
setpgid(2), setsid(2), signal(2), termio(7), termios(7).
Page 3 CX/UX Programmer's Reference Manual