0
我需要爲我的進程進行通信共享內存。我這樣做:進程共享內存不共享(c,linux)
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);
在此之後,我使用叉進行更多的過程。我測試過,每個過程都寫在matriz_resul
,但每個過程都有自己的區域。如果我打印該區域的內容,每個過程都會打印出不同的內容。內存不共享。我在互聯網上找到的每個例子都是這樣的。任何人都知道我做錯了什麼?
我還沒有確定病因,但你真的不應該使用舊版來SYSV IPC功能,除非你絕對必須的(例如,爲了滿足一些現有的API類似的要求XSHM擴展)。使用POSIX共享內存('shm_open')或者簡單的'mmap'和'MAP_ANONYMOUS'。 – 2013-05-06 01:51:39