a) 意義:多個程序共享一部分物理記憶體。訪問快,方便 b) 先建立共享記憶體:int shmget(key_t key, int size, int shm***) 1. key:標誌共享記憶體的鍵值;0/ipc_private a) key=0 ...
a) 意義:多個程序共享一部分物理記憶體。訪問快,方便
b) 先建立共享記憶體:int shmget(key_t key, int size, int shm***)
1. key:標誌共享記憶體的鍵值;0/ipc_private
a) key=0:本不建立,但若shm***仍為ipc_private則仍建立
2. size:大小
3. shm***:標誌 一般s_irusr|s_iwusr
4. 返回值:成功返回共享記憶體標誌符;失敗返回-1;
5. #include,#include,#include,#include
c) 再對映共享記憶體:
1. int shmat(int shmid, char *shmaddr, int flag)
a) shmid:shmget函式返回的共享儲存識別符號
b) shmaddr:是用來儲存對映位址,若是0:表述系統自動找位址,通過返回值來得到
c) flag:決定以什麼方式來確定對映的位址(通常是0)
d) 返回值:shmaddr=0時,成功返回共享記憶體對映到程序中的位址;失敗返回-1
2. 共享記憶體對映到不同程序,位址不同
d) 清除內容:得到位址後需要先把這個記憶體區重置資料
1. memset(p_addr,』\0』,1024):1024個位元組全部重置為
a) #include
e) 拷貝內容:strncpy(p_addr, argv[1],1024)
f) 解除對映:int shmdt(char *shmaddr)
IPC 共享記憶體
共享記憶體 shared memory 是最簡單的程序間通訊方式,它允許多個程序訪問相同的記憶體,乙個程序改變其中的資料後,其他的程序都可以看到資料的變化。共享記憶體是程序間最快速的通訊方式 程序共享同一塊記憶體空間。訪問共享記憶體和訪問私有記憶體一樣快。不需要系統呼叫和核心入口。不造成不必要的記憶...
IPC 共享記憶體
程序可以將同一段共享記憶體連線到它們自己的位址空間中,所有程序都可以訪問共享記憶體中的位址。共享記憶體並未提供同步機制,使用訊號量進行同步。共享記憶體的特點 1 共享記憶體是程序間共享資料的一種最快的方法。乙個程序向共享的記憶體區域寫入了資料,共享這個記憶體區域的所有程序就可以立刻看到其中的內容。2...
IPC 共享記憶體
共享記憶體是程序間共享資料的一種最快的方法,乙個程序向共享的記憶體區域寫入了資料,共享這個記憶體區域的所有程序就可以立刻看到其中的內容。共享記憶體允許兩個或者多個程序共享給定的儲存區域。使用共享記憶體要注意的是多個程序之間對乙個給定儲存區訪問的互斥。若乙個程序正在向共享記憶體區寫資料,則在它做完這一...