【发布时间】:2014-04-22 19:29:26
【问题描述】:
在这里完成 GNU fork() noob。我需要派生 N 个将做完全相同的事情的进程:分配 2 个数组,初始化它们并处理数据。我尝试了可以简单压缩成的代码:
int main()
{
int a = 0;
double b = 0;
double *a1, *a2;
fork();
a1 = new double[10];
a2 = new double[10];
// initialize and process data in a1 and a2 using an algorithm involving a and b.
}
就为每个进程创建a1 和a2 的副本以及a 和b 的副本而言,我的fork() 是否在正确的位置?或者a 和b 的声明和/或初始化应该在fork() 调用之后?每个进程都应该有自己的a, b, a1 and a2。
【问题讨论】:
-
this question 的近似副本。见this answer。您应该始终保留并测试 fork(2) 的结果
-
是的,我可以花几个月或几年的时间研究内核内部结构,或者从知识渊博的人那里得到一个提示,然后开始解决眼前的问题,值得花几分钟的时间来写- 离开代码。你的答案是“长”的,它是正确的。但这不是我需要的。是否有一个“简短”的答案:fork() 调用的位置重要吗?请多投反对票!打新人!