[理工] [作业系统]课本fork问题

楼主: mikasamikoto (妹妹骂我是肥猪)   2022-10-23 11:49:41
恐龙本题目
3.1 Using the program shown in Figure 3.30, explain what the output will be
at Line A.
Figure 3.30:
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
int value = 5;
int main()
{
pid t pid;
pid = fork();
if (pid == 0) { /* child process */
value += 15;
return 0;
}
else if (pid > 0) { /* parent process */
wait(NULL);
printf("PARENT: value = %d",value); /* LINE A *
return 0;
}
}
解答:
Answer:
The result is still 5 as the child updates its copy of value. When control
returns to the parent, its value remains at 5.
奇怪有wait的时候父不是会等子做完吗? 这样value应该有更新成20了吧
感谢
作者: KaryuuIssen (一闪)   2022-10-23 13:03:00
如同解答写的 子程序的变量会是副本 跟父程序不相干
作者: jemmy9211 (态度地飞行)   2022-10-23 15:57:00
data section 是分开的

Links booklink

Contact Us: admin [ a t ] ucptt.com