为什么PPID会改变?
Why does PPID change?
这是我的代码:
#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 是 child 的 PPID?不应该是4310吗?
谢谢你。
你没有在 parent 代码中打印出 parent 的 PID,所以你没有什么可以比较的。 fork()
returns child 的 PID 到 parent。在您的示例中,parent 的 PID 为 4309,child 为 4310。
这是我的代码:
#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 是 child 的 PPID?不应该是4310吗? 谢谢你。
你没有在 parent 代码中打印出 parent 的 PID,所以你没有什么可以比较的。 fork()
returns child 的 PID 到 parent。在您的示例中,parent 的 PID 为 4309,child 为 4310。