【发布时间】:2020-07-12 09:30:07
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int rc = fork();
int pid = getpid();
printf("from 1: %d\n", pid);
if (rc == 0) {
printf("from 2: %d\n", pid);
rc = fork();
if (rc == 0) {
printf("from 3: %d\n", pid);
} else {
printf("from 4: %d\n", pid);
}
} else {
printf("from 5: %d\n", pid);
}
}
当我运行这段代码时,我得到了这个输出:
from 1: 5890
from 5: 5890
from 1: 5891
from 2: 5891
from 4: 5891
from 3: 5891
1 - 为什么1 会被执行两次?
2 - 为什么我得到变量pid 的两个值?
【问题讨论】:
-
1 - 因为你打电话给
fork。 2 - 因为你打电话给fork。