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

# process-keyring(7)

per-process shared keyring

## NAME

process-keyring - per-process shared keyring

## DESCRIPTION

The process keyring is a keyring used to anchor keys on behalf of a process. It is created only when a process requests it. The process keyring has the name (description) *\_pid*.

A special serial number value, **KEY\_SPEC\_PROCESS\_KEYRING**, is defined that can be used in lieu of the actual serial number of the calling process's process keyring.

From the [**keyctl**(1)](/keyctl/1.md) utility, '**@p**' can be used instead of a numeric key ID in much the same way, but since [**keyctl**(1)](/keyctl/1.md) is a program run after forking, this is of no utility.

A thread created using the [**clone**(2)](/clone/2.md) **CLONE\_THREAD** flag has the same process keyring as the caller of [**clone**(2)](/clone/2.md). When a new process is created using **fork**() it initially has no process keyring. A process's process keyring is cleared on [**execve**(2)](/execve/2.md). The process keyring is destroyed when the last thread that refers to it terminates.

If a process doesn't have a process keyring when it is accessed, then the process keyring will be created if the keyring is to be modified; otherwise, the error **ENOKEY** results.

## SEE ALSO

[**keyctl**(1)](/keyctl/1.md), [**keyctl**(3)](/keyctl/3.md), [**keyrings**(7)](/keyrings/7.md), [**persistent-keyring**(7)](/persistent-keyring/7.md), [**session-keyring**(7)](/session-keyring/7.md), [**thread-keyring**(7)](/thread-keyring/7.md), [**user-keyring**(7)](/user-keyring/7.md), [**user-session-keyring**(7)](/user-session-keyring/7.md)
