我有一個用叉子潛水的過程。我需要爲每個進程的計算結果創建一個內存區域(矩陣)。我怎樣才能做到這一點?我試過的或我可以使用的所有東西,但它不在進程之間共享,或者我無法使用(不確定是否共享)。有人知道我可以使用什麼?它可以是簡單的,沒有任何安全性。越簡單越好。 我試過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