The Process Tree#
Process ID (PID) And Parent Process ID (PPID)#
Every process has an ID (PID … Process ID)
Every process but the first (PID 1) has a parent process
⟶ process tree
A typical distro’s process tree (simplified)
init(PID 1): created by kernel ⟶ no parentNowadays mostly
systemd“Service manager”
User login sessions (console, graphical, network …)
A typical distro’s process tree#
System Calls: getpid(), getppid()#
Technically …
A process can ask the kernel about its parent process
A process cannot ask the kernel about its children ⟶ has to take care itself
#include <unistd.h>
#include <print>
int main(int argc, char** argv)
{
std::println("PID: {}", getpid()); // <--- self's PID
std::println("PPID: {}", getppid()); // <--- parent's PID
return 0;
}
$ echo $$ # <-- PID of the shell itself
33634
$ ./code/sysprog-process-tree
PID: 115971
PPID: 33634