Unix fork()进程。。。我需要帮助。我有答案,但我不明白是怎么做到的。
变量x有多少个不同的副本?当流程完成时,他们的价值观是什么Unix fork()进程。。。我需要帮助。我有答案,但我不明白是怎么做到的。,unix,process,fork,Unix,Process,Fork,变量x有多少个不同的副本?当流程完成时,他们的价值观是什么 main (int argc, char ** argv){ int child = fork() int x = 5; if (child == 0) { x += 5; } else { child = fork(); x += 10; if(child) { x += 5; } }
main (int argc, char ** argv){
int child = fork()
int x = 5;
if (child == 0) {
x += 5;
} else {
child = fork();
x += 10;
if(child) {
x += 5;
}
}
}
我知道答案,但是有人能帮我解决这个问题吗 每次调用fork()函数时返回2次。
它创建两个进程,将0返回给父进程,将另一个值返回给子进程。
这意味着两个条件都将被执行 我不知道您是否正确地提出了您的问题,即x的副本(与地址空间的数量相比),但fork的工作原理如下:
- 每次调用此方法时,都会为所有对象创建2个地址空间 下面的陈述
- 就你而言:
- 在“int child=fork()”之后,将创建2个地址空间,并在 “child=fork()”,它将仅对父级、父级执行 将进一步打断2个地址空间
- 所以答案是3