---
name: "tcgetpgrp"
section: "3"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/tcgetpgrp"
---

# tcgetpgrp(3)

get foreground process group ID

## NAME

**tcgetpgrp** – get foreground process group ID

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<unistd.h\>**

*pid\_t*\

**tcgetpgrp**(*int fildes*);

## DESCRIPTION

The **tcgetpgrp**() function returns the value of the process group ID of the foreground process group associated with the terminal device. If there is no foreground process group, **tcgetpgrp**() returns an invalid process ID.

## ERRORS

If an error occurs, **tcgetpgrp**() returns -1 and the global variable *errno* is set to indicate the error, as follows:

- \[EBADF\]

  The *fildes* argument is not a valid file descriptor.

- \[ENOTTY\]

  The calling process does not have a controlling terminal or the underlying terminal device represented by *fildes* is not the controlling terminal.

## LEGACY SYNOPSIS

**#include \<sys/types.h\>** **#include \<unistd.h\>**

The include file ⟨sys/types.h⟩ is necessary.

## SEE ALSO

[setpgid(2)](/setpgid/2.md), [setsid(2)](/setsid/2.md), [tcsetpgrp(3)](/tcsetpgrp/3.md), [compat(5)](/compat/5.md)

## STANDARDS

The **tcgetpgrp**() function is expected to be compliant with the IEEE Std 1003.1-1988 (“POSIX.1”) specification.
