GETPGRP(2)

GETPGRP(2) | System Calls Manual | GETPGRP(2)

# NAME

`getpgrp`, `getpgid` —
get process group

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <unistd.h>`

pid_t
`getpgrp`(void);

pid_t
`getpgid`(pid_t pid);

# DESCRIPTION

The process group of the current process is returned by `getpgrp`(). The process group of the pid process is returned by `getpgid`().

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 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.

# COMPATIBILITY

This version of `getpgrp`() differs from past Berkeley versions by not taking a pid_t pid argument. This incompatibility is required by IEEE Std 1003.1-1990 (“POSIX.1”).

From the IEEE Std 1003.1-1990 (“POSIX.1”) Rationale:

4.3BSD provides a `getpgrp`() function 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 System V `getpgrp`() suffices, and the added complexity of the 4.3BSD `getpgrp`() has been omitted from POSIX.1. The old functionality is available from the `getpgid`() function.

# ERRORS

`getpgrp`() always succeeds, however `getpgid`() will succeed unless:

[`ESRCH`]
  if there is no process with a process ID equal to pid.

# SEE ALSO

setpgid(2), termios(4)

# STANDARDS

The `getpgrp`() function conforms to IEEE Std 1003.1-1988 (“POSIX.1”).

# HISTORY

The `getpgrp`() function call appeared in 4.0BSD. The `getpgid`() function call is derived from its usage in AT&T System V Release 4 UNIX, and first appeared in NetBSD 1.3.

August 11, 2002 | NetBSD 9.5