【发布时间】:2018-06-16 14:37:09
【问题描述】:
我对 fork 进程有疑问。我有一个代码是
int main(int c, char **v){
fork();
fork() && fork() || fork();
printf("Hello\t");
}
根据我的说法,上述代码的输出将是
24 = 16 次 "Hello",因为每个分叉都会创建两个自己的副本,所以整体变为 2*2*2*2,它们是 16 乘以 "Hello"。
但这是不正确的,它给我的输出是10 times Hello。这里发生了什么?
【问题讨论】:
-
fork函数在父进程中返回什么?它在子进程中返回什么? short-circuit evaluation 是如何工作的?当您可以回答时,您就知道会发生什么。知道operator precedence 也会有所帮助。 -
还有一些吹毛求疵:
fork函数仅在将原始父进程计为“副本”时创建两个副本。 -
表示作业、测验、'-F' 标记或粉红色的纸条。