进程共享内存不共享(c,linux)

时间:2013-05-06 00:55:40

标签: c memory process shared

我需要为我的进程进行共享内存通信。我这样做:

int **matriz_result;
int segment_id;
segment_id = shmget(IPC_PRIVATE, (sizeof(int) * linhas_mat1 * colunas_mat2) , S_IRUSR | S_IWUSR);
matriz_result = (int **) shmat(segment_id, NULL, 0);

在此之后我使用fork来制作更多进程。我测试过并且每个进程都在matriz_resul中编写,但每个进程都有自己的区域。如果我打印该区域的内容,每个过程都会打印出不同的内容。内存不共享。我在互联网上找到的每个例子都是这样的。谁知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

试试这个

segment_id = mmap(NULL,(sizeof(int) * linhas_mat1 * colunas_mat2),PROT_WRITE | PROT_READ, MAP_ANONYMOUS | MAP_SHARED,-1,0 );