为什么PPID会改变?

时间:2015-03-17 15:48:43

标签: linux pid child-process

这是我的代码:

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

int main() {
    pid_t pid;
    int status;
    if ((pid = fork()) < 0) {
        printf("Fork failed.");
    } else if (pid == 0) {
        printf("CHILD:\nPID: %d, PPID: %d, UID: %d\n", pid, getppid(), getuid());
    } else {
        wait(&status); //wait for child to terminate
        printf("PARENT:\nPID: %d, PPID: %d, UID: %d\n", pid, getppid(), getuid());
    }   

    return 0;
}

这是输出:

CHILD:
PID: 0, PPID: 4309, UID: 1000
PARENT:
PID: 4310, PPID: 3188, UID: 1000

为什么4309是孩子的PPID?不应该是4310吗? 揍你。

1 个答案:

答案 0 :(得分:0)

您没有在父代码中打印出父级的PID,因此您无需将其与之进行比较。 fork()子级的 PID返回给父级。在您的示例中,似乎父级具有PID 4309和子级4310。