The process group of the current process is returned by
getpgrp (.);
The process group of the process identified by
Fa pid
is returned by
getpgid (.);
If
Fa pid
is zero,
getpgid ();
returns the process group of the current process.
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.
This system call is thus used by programs such as
csh(1)
to create
process groups
in implementing job control.
The
tcgetpgrp ();
and
tcsetpgrp ();
calls
are used to get/set the process group of the control terminal.
RETURN VALUES
The
getpgrp ();
system call always succeeds.
Upon successful completion, the
getpgid ();
system call returns the process group of the specified process;
otherwise, it returns a value of -1 and sets
errno
to indicate the error.
COMPATIBILITY
This version of
getpgrp ();
differs from past Berkeley versions by not taking a
Fa pid_t pid
argument.
This incompatibility is required by
St -p1003.1-90 .
From the
St -p1003.1-90
Rationale:
BSD 4.3
provides a
getpgrp ();
system call that returns the process group ID for a specified process.
Although this function is used to support job control, all known
job-control shells always specify the calling process with this
function.
Thus, the simpler
AT&T System
V
getpgrp ();
suffices, and the added complexity of the
BSD 4.3
getpgrp ();
has been omitted from POSIX.1.
The old functionality is available from the
getpgid ();
system call.
ERRORS
The
getpgid ();
system call
will succeed unless:
Bq Er ESRCH
there is no process whose process ID equals
Fa pid