¿Por qué los procesos que bifurco obtienen systemd como sus padres?

Estoy aprendiendo fork () en Linux, y aquí está mi programa:

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <unistd.h>
  4 int main(void){
  5         int pid;
  6         pid = fork();
  7         if(pid < 0){
  8                 exit(1);
  9         }
 10         if(pid == 0){
 11                 fork();
 12                 fork();
 13                 printf("pid:%d ppid:%d\n",getpid(),getppid());
 14                 exit(0);
 15                 }
 16         else{
 17                 printf("parent pid:%d ppid:%d\n",getpid(),getppid());
 18                 exit(0);
 19         }       
 20        
 21 }

A veces funcionó bien, con un resultado como este:

./test1.out
parent pid:27596 ppid:21425
pid:27599 ppid:27597
pid:27597 ppid:27596
pid:27598 ppid:27597
pid:27600 ppid:27598

Pero el resultado no fue consistente, la mayoría de las veces funcionó así:

parent pid:27566 ppid:21425
pid:27567 ppid:27566
pid:27568 ppid:27567
pid:27569 ppid:1599
pid:27570 ppid:1599

Lo cual no tiene sentido para mí, así que escribí$ ps aux para averiguar qué proceso es 1599: (con algunas columnas eliminadas)

  USER       PID  VSZ   RSS    STAT START   COMMAND
  linux     1599  63236  6316   Ss   09:03  /lib/systemd/systemd --user

¿Alguien puede ayudarme a arreglar las cosas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta