这段代码的输出是什么?为什么?

时间:2016-04-13 18:47:55

标签: c linux fork

我想问一下这段代码是否可以打印190?

父亲的pid = 9 孩子的pid = 10 。 。

pid_t pid = fork();

if (pid<0)
{ 
    exit(1);
}
else if (pid>0)
{
    printf("%d",getpid());
    exit(0);
}
else
{
    char *const argv[] = {"sleep","1",NULL};
    execv("/bin/sleep", argv);
    printf("%d",getpid());
}

2 个答案:

答案 0 :(得分:0)

尽管有可能,但儿童pid不太可能像190那么低。

父pid几乎不可能是9而子pid是10,因为系统启动会生成比这更大的pid值。

答案 1 :(得分:0)

在孩子中,如果execv成功,它将永远不会返回。这会导致printf()不被执行。你看到的“190”只是来自父母打印自己的pid。