---
name: "PR_SET_CHILD_SUBREAPER"
section: "2const"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/PR_SET_CHILD_SUBREAPER"
---

# PR\_SET\_CHILD\_SUBREAPER(2const)

set/unset the "child subreaper" attribute of the calling process

## NAME

PR\_SET\_CHILD\_SUBREAPER - set/unset the "child subreaper" attribute of the calling process

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <linux/prctl.h>  /* Definition of PR_* constants */
#include <sys/prctl.h>
```

**int prctl(PR\_SET\_CHILD\_SUBREAPER, long** *set***);**

## DESCRIPTION

If *set* is nonzero, set the "child subreaper" attribute of the calling process; if *set* is zero, unset the attribute.

A subreaper fulfills the role of [**init**(1)](/init/1.md) for its descendant processes. When a process becomes orphaned (i.e., its immediate parent terminates), then that process will be reparented to the nearest still living ancestor subreaper. Subsequently, calls to [**getppid**(2)](/getppid/2.md) in the orphaned process will now return the PID of the subreaper process, and when the orphan terminates, it is the subreaper process that will receive a **SIGCHLD** signal and will be able to [**wait**(2)](/wait/2.md) on the process to discover its termination status.

The setting of the "child subreaper" attribute is not inherited by children created by [**fork**(2)](/fork/2.md) and [**clone**(2)](/clone/2.md). The setting is preserved across [**execve**(2)](/execve/2.md).

Establishing a subreaper process is useful in session management frameworks where a hierarchical group of processes is managed by a subreaper process that needs to be informed when one of the processes—for example, a double-forked daemon—terminates (perhaps so that it can restart that process). Some [**init**(1)](/init/1.md) frameworks (e.g., [**systemd**(1)](/systemd/1.md)) employ a subreaper process for similar reasons.

## RETURN VALUE

On success, 0 is returned. On error, -1 is returned, and *errno* is set to indicate the error.

## STANDARDS

Linux.

## HISTORY

Linux 3.4.

## SEE ALSO

[**prctl**(2)](/prctl/2.md), [**PR\_GET\_CHILD\_SUBREAPER**(2const)](/PR_GET_CHILD_SUBREAPER/2const.md)
