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

# killpg(2)

send signal to a process group

## NAME

**killpg** – send signal to a process group

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

*int*\

**killpg**(*pid\_t pgrp*, *int sig*);

## DESCRIPTION

The **killpg**() function sends the signal *sig* to the process group *pgrp*. See [sigaction(2)](/sigaction/2.md) for a list of signals. If *pgrp* is 0, **killpg**() sends the signal to the sending process's process group.

The sending process and members of the process group must have the same effective user ID, or the sender must be the super-user. As a single special case the continue signal SIGCONT may be sent to any process with the same session ID as the caller.

## RETURN VALUES

The **killpg()** function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

## ERRORS

The **killpg**() function will fail and no signal will be sent if:

- \[EINVAL\]

  The *sig* argument is not a valid signal number.

- \[EPERM\]

  The sending process is not the super-user and one or more of the target processes has an effective user ID different from that of the sending process.

- \[ESRCH\]

  No process can be found in the process group specified by *pgrp*.

- \[ESRCH\]

  The process group was given as 0 but the sending process does not have a process group.

## LEGACY SYNOPSIS

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

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

## SEE ALSO

[getpgrp(2)](/getpgrp/2.md), [kill(2)](/kill/2.md), [sigaction(2)](/sigaction/2.md), [compat(5)](/compat/5.md)

## HISTORY

The **killpg**() function appeared in 4.0BSD.
