变量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;
}
}
}
我知道答案,但有人可以帮助我解决这个问题吗?
答案 0 :(得分:0)
每次调用fork()函数返回2次。 它创建了两个进程,将0返回给父进程,将另一个值返回给子进程。 这意味着两种条件都将被执行。
答案 1 :(得分:0)
我不知道你是否正确构建了你的问题,即x的副本(与地址空间的编号相比),但这里是fork的工作方式:
每次调用此方法时,都会为所有人创建2个地址空间 下面的陈述。
:
在“int child = fork()”之后,创建了2个地址空间 “child = fork()”,只会为父,父执行 将进一步打破2个地址空间
所以答案是3