Почему процессы, которые я разветвляю, получают systemd как своего родителя?

Я изучаю fork () в Linux, и вот моя программа:

  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 }

Иногда это работало нормально, с таким результатом:

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

Но результат не был последовательным, чаще всего он работал так:

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

Что не имеет смысла для меня, поэтому я напечатал$ ps aux чтобы выяснить, что это за процесс 1599: (с некоторыми удаленными столбцами)

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

Кто-нибудь может мне помочь исправить ситуацию?

Ответы на вопрос(3)

Ваш ответ на вопрос