我有一个用叉子潜水的过程。我需要为每个进程的计算结果创建一个内存区域(矩阵)。我怎样才能做到这一点?我尝试过或可以使用的所有东西,但它没有在进程之间共享或者我无法使用(不确定是否共享)。有人知道我可以用什么吗?它可以很简单,没有任何安全性。越简单越好。我试过shmget
了,但它没有共享,我不知道如何mmap
正确分配或使用它。我尝试了其他疏远的东西,但没有。有小费吗?
一些尝试:
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;