qq1519932709 2014-05-01 11:27 采纳率: 0%
浏览 7614

Linux父进程先于子进程终止后子进程的ppid不是init进程的id 1

关于父进程先于子进程终止后,子进程应该由init进程收养,所以子进程的ppid不应该是1吗?但我用C语言查看时显示的确是另一个进程id:1795

#include<unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/wait.h>

int main(void)
{
pid_t pid;

if((pid = fork()) == 0)
{
    sleep(4);
    printf("child 1, pid = %d\tppid = %d\n",pid, getppid());
    exit(0);
}
if((pid = fork()) == 0)
{
    sleep(3);
    printf("child 2, pid = %d\tppid = %d\n",pid, getppid());
    exit(0);
}

printf("parent, pid = %d\tppid = %d\n", getpid(), getppid());
exit(0);
}

结果如下:
parent, pid = 5462 ppid = 5305
child 2, pid = 5464 ppid = 1759
child 1, pid = 5463 ppid = 1759

求解释

  • 写回答

6条回答

  • 小邓在路上 2014-05-14 06:02
    关注

    你这个打印出来的结果绝对是有问题的 ,我用你的代码重新敲了一下,我打印出来的结果是;
    parent,pid = 5813 ppid = 5352
    child 2 pid = 0 ppid = 1
    chiled 1 pid = 0 ppid = 1

    这样看来你所打印的pid 和ppid 都有问题,代码我觉得没什么问题 ,但是,看不懂你的打印结果

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题