【发布时间】:2018-10-26 12:07:20
【问题描述】:
这个问题是关于 QNX 的,并且在标题中已经说明了很多。 我在两个进程中修改变量地址后尝试记录变量地址,假设写时复制不再起作用并且它们不相同,所以我希望地址不同。但它们是相同的(虚拟地址,但仍然)。
那么如何在不打印变量值的情况下检查一个进程是否不会影响另一个进程,也许有更简单的解决方案?
int q;
q = 3;
...
if (pid == 0) {
// in child
q = 5;
printf("%d\n", &q);
} else {
// in parent
q = 9;
printf("%d\n", &q);
}
【问题讨论】:
-
@cdarke:绝对可以保证。
fork从根本上要求(现有对象和函数的)虚拟地址在子节点中相同。否则所有指向它们的数据存储指针都将失效。 -
@R - 没错,我的意思是分叉之后的后续操作,例如如果两者都调用
malloc或加载共享对象。