我想看到子进程执行时getppid()
将返回什么功能。我输入了sleep(10)
以完成父流程。实际上,我应该获取“ CHILD:我的父PID-1 \ n”,因为如果父级未调用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;
}
不要关注评论。