我有一个用叉子潜水的过程。我需要为每个进程的计算结果创建一个内存区域(矩阵)。我怎样才能做到这一点?我试过的或我可以使用的所有东西,但它不在进程之间共享,或者我无法使用(不确定是否共享)。有人知道我可以使用什么?它可以是简单的,没有任何安全性。越简单越好。 我试过shmget
但它没有共享,我不知道如何使用mmap
来正确分配或使用它。我尝试了其他陌生的东西,但没有。有小费吗?如何制作共享内存进程(c,linux)?
一些尝试:
后segment_id = shmget(IPC_PRIVATE, (sizeof(int) * linhas_mat1 * colunas_mat2) , S_IRUSR|S_IWUSR);
matriz_result = (int **) shmat(segment_id, NULL, 0);
福克斯。每个进程通常可以使用matriz_result
作为矩阵,但内存不共享。每个人都有一个像局部变量。
segment_id = shm_open("/myregion", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
matriz_result = mmap(NULL, (sizeof(int) * linhas_mat1 * colunas_mat2), PROT_READ | PROT_WRITE, MAP_SHARED, segment_id, 0);
用mmap试过这个,但我不知道它是否正确。我对这样的低级编程不太好,而且我也找不到正确使用它的好例子。
声明:
int segment_id is;
int **matriz_result;
请举例说明你已经尝试了什么,以及为什么它没有工作,然后我们可以帮助你更好。 – Mike 2013-05-07 14:50:39
mmap是要走的路。重新阅读联合国教科文组织,谷歌教程,或具体问题。我们无法猜测你做错了什么。 – 2013-05-07 14:54:49
另外'mmap'使用'shmopen',而不是'shmget'。那么一切都应该在手册页上。 – 2013-05-07 15:14:13