我在C中使用fork()来分割通过本地数组运行的工作,让每个进程运行一半,然后乘以数组中的每个点的数字,然后将产品设置在第三个数组中。使用fork:从父进程访问子进程内存
pid_t pid;
pid = fork();
if (pid == 0){
for (i=1; i<((SIZE/2)+1); i++)
{
output[i] = (one[i] * two[i]);
}
exit(0);
}
else{
wait(NULL);
for (i=((SIZE/2)+1); i<(SIZE+1); i++)
{
output[i] = one[i]*two[i];
}
}
然而,当我这个段的代码我只接收由所述父进程设置的部分之后,打印产品阵列,我假定这是因为子进程将其存储在其他地方的存储器中的值父母在打印产品阵列时无法拾取,但我不完全确定。预先感谢您的帮助。
我可以添加另一个分叉新进程的有用用法吗?可以在自己的进程中运行可能的错误代码(可能是由于输入错误)或一些测试代码。这样可以保护主进程免受诸如SIGSEGV之类的信号的干扰。父进程仍然可以报告孩子的状态(使用'wait()')。 – 2014-09-29 04:41:44
优秀的第一个答案+1 – 2014-09-29 04:52:15