Я хочу посмотреть, что будет getppid()
возвращаемая функция, когда будет выполняться дочерний процесс.Я ввел sleep(10)
для завершения родительского процесса.На самом деле я должен получить « CHILD: PID моего родителя - 1 \ n», потому что этот дочерний процесс должен иметь процесс init в качестве родителя, если родительский процесс не вызывает wait()
.Но я получаю PPID = 959 .Это не процесс инициализации.Этот PPID соответствует некоторой /sbin/upstart --user
команде.
Это мой код:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(void) {
int status;
pid_t pid, ch_pid;
switch(pid=fork()) {
case -1:
perror("Fork failed");
exit(1);
case 0:
sleep(10);
printf("\nCHILD: This is child process!\n");
printf("CHILD: My PID is-- %d\n", getpid());
printf("CHILD: My parent PID -- %d\n", getppid());
//sleep(5);
exit(0);
default:
//sleep(60);
/*Prohibit PP to execute*/
printf("PARENT: This is parent process!\n");
printf("PARENT: My PID -- %d\n", getpid());
printf("PARENT: My child PID %d\n",pid);
printf("PARENT: My parent PID %d\n",getppid());
exit(0);
}
return 0;
}
Не обращайте внимания на комментарии.