---
name: "getpgrp"
section: "2freebsd"
platform: "linux"
package: "freebsd-manpages"
version: "12.2-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/getpgid/2freebsd"
---

# getpgrp(2freebsd)

get process group

Part of [getpgid(2freebsd)](/getpgid/2freebsd.md).

## NAME

**getpgrp** – 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 process identified by *pid* is returned by **getpgid**(). If *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)](/csh/1.md) 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 *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**() 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 UNIX **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**() system call.

## ERRORS

The **getpgid**() system call will succeed unless:

- \[ESRCH\]

  there is no process whose process ID equals *pid*

## SEE ALSO

[getsid(2)](/getsid/2.md), [setpgid(2)](/setpgid/2.md), [termios(4)](/termios/4.md)

## STANDARDS

The **getpgrp**() system call is expected to conform to ISO/IEC 9945-1:1990 (“POSIX.1”).

## HISTORY

The **getpgrp**() system call appeared in 4.0BSD. The **getpgid**() system call is derived from its usage in AT&T System V Release 4 UNIX.
