August 11, 2002 GETPGRP 2

### NAME

getpgrp, getpgid - get process group

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

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

### 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.4 `UNIX`, and first appeared in NetBSD1.3.

### COMPATIBILITY

This version of getpgrp(``) differs from past Berkeley versions by not taking a ```pid_t pid` argument. This incompatibility is required by ISO/IEC 9945-1:1990 (``POSIX.1'') .

From the ISO/IEC 9945-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.