我不知道在 fork 中首先执行什么。例如我有这个代码:
int main() {
int n = 1;
if(fork() == 0) {
n = n + 1;
exit(0);
}
n = n + 2;
printf(“%d: %d\n”, getpid(), n);
wait(0);
return 0;
}
这会在屏幕上打印什么?
1: 3
0: 4
或者
0: 4
1: 3
它没有具体说明。由操作系统调度程序决定首先调度哪个进程。
After a fork(), it is indeterminate which process—the parent
or the child—next has access to the CPU. On a multiprocessor system,
they may both simultaneously get access to a CPU.
当我运行这个程序时,它只打印一行,而不是两行,因为它exit()
在fork()
's 块中。
所以问题是,你是否忘记了printf()
'fork()
块中的 a ,还是不应该在exit()
那里?
如果您想让一个进程在另一个进程之前运行,请尝试使用 sleep() 系统调用。