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

# proc\_pid\_root(5)

symbolic link to root directory

## NAME

/proc/pid/root/ - symbolic link to root directory

## DESCRIPTION

- */proc/*pid*/root/*

  UNIX and Linux support the idea of a per-process root of the filesystem, set by the [**chroot**(2)](/chroot/2.md) system call. This file is a symbolic link that points to the process's root directory, and behaves in the same way as *exe*, and *fd/\**.

-

  Note however that this file is not merely a symbolic link. It provides the same view of the filesystem (including namespaces and the set of per-process mounts) as the process itself. An example illustrates this point. In one terminal, we start a shell in new user and mount namespaces, and in that shell we create some new mounts:

-

  ```
  $ PS1='sh1# ' unshare -Urnm;
  sh1# mount -t tmpfs tmpfs /etc;  # Mount empty tmpfs at /etc
  sh1# mount --bind /usr /dev;     # Mount /usr at /dev
  sh1# echo $$;
  27123
  ```

-

  In a second terminal window, in the initial mount namespace, we look at the contents of the corresponding mounts in the initial and new namespaces:

-

  ```
  $ PS1='sh2# ' sudo sh;
  sh2# ls /etc | wc -l;                  # In initial NS
  309
  sh2# ls /proc/27123/root/etc | wc -l;  # /etc in other NS
  0                                     # The empty tmpfs dir
  sh2# ls /dev | wc -l;                  # In initial NS
  205
  sh2# ls /proc/27123/root/dev | wc -l;  # /dev in other NS
  11                                    # Actually bind
                                        # mounted to /usr
  sh2# ls /usr | wc -l;                  # /usr in initial NS
  11
  ```

-

  In a multithreaded process, the contents of the */proc/*pid*/root* symbolic link are not available if the main thread has already terminated (typically by calling [**pthread\_exit**(3)](/pthread_exit/3.md)).

-

  Permission to dereference or read ([**readlink**(2)](/readlink/2.md)) this symbolic link is governed by a ptrace access mode **PTRACE\_MODE\_READ\_FSCREDS** check; see [**ptrace**(2)](/ptrace/2.md).

## SEE ALSO

[**proc**(5)](/proc/5.md)
