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

# NAME

`getpgrp`, `getpgid` — get process group

# 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`(). 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.

These calls are 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 controlling terminal.

# ERRORS

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

[`EPERM`]
  The current process and the process pid are not in the same session.
[`ESRCH`]
  There is no process with a process ID equal to pid.

# SEE ALSO

setpgid(2), termios(4)

# STANDARDS

The `getpgrp`() and `getpgid`() functions conform to IEEE Std 1003.1-2008 (“POSIX.1”).

# HISTORY

A `getpgrp`() function call that took a pid_t pid argument appeared in 4.0BSD. This version, without an argument, is derived from its usage in System V Release 4, and first appeared in NetBSD 0.9.

The `getpgid`() function call is derived from its usage in System V Release 4, and first appeared in NetBSD 1.2A.

October 13, 2022 | Debian