我想設置s段的共享內存來容納一個字符串數組。作爲這個數組的一個例子Linux shmget()函數在c + +
string example [] = {「This is」,「An Example」,「of strings」};
然後我嘗試調用shmget,這樣我就可以保留適當數量的os共享內存。
shmget的(IPC_PRIVATE,整型尺寸(例如),IPC_CREAT); //我希望這創建共享存儲器段
我發現這個site它說「關鍵參數是與相關聯的訪問值信號量ID「什麼是信號量ID,我如何創建一個。
這編譯使用g ++ -Wall,但我不知道如何檢查,看看它是否有。根據linux中的shm手冊,其中IPC_PRIVATE是我應該指定的類型「key_t」的東西。我的想法是我如何識別共享內存的關鍵,即指定一個字符串作爲共享內存名稱,或指定一個ID號碼。
閱讀手冊指出,shmget()返回一個「shmid」。同樣,儘管什麼是shmid,它是一個int,字符串,指針,還是它是一些特殊類型,這是我確定我的共享內存段的方式嗎?另外如果shmget()正在返回,我不需要將它分配給某些東西?
如果您可以推薦教程或概述,我會非常感激。除了上面的具體問題之外,我想要一個從fork()命令創建的線程訪問共享內存的例子。
我的最終目標是爲我的數組中的每個字符串生成一個線程,它將執行一種反轉。這只是一個小任務,開始使用共享內存和pthreads,因爲我沒有找到可以通過的教程。
'shmget()'返回一個'int'(http://www.kernel.org/doc/man-pages/online/pages/man2/shmget.2.html)。所以'shmid'是一個整數。 – 2013-02-23 00:14:55