子进程返回错误值

时间:2018-10-13 20:56:38

标签: process fork

我想看到子进程执行时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;
}

不要关注评论。

0 个答案:

没有答案