1.建立共享記憶體函式 shmget()
#include#includeint shmget(key_t key,size_t size,int shm***);
shm*** :
ipc_creat : 如果核心中不存在這樣的訊號量,則把他建立出來
ipc_excl : 與 ipc_creat 一起使用時,如果訊號量已經存在,則操作將失敗,並返回 -1
2.獲得共享記憶體位址函式 shmat()
void *shmat(int shmid, const void *shmaddr, int shm***);
若果 shmaddr 引數值等於 0 ,核心將試著查詢乙個未對映的區域。使用者可以指定乙個位址,但通常該位址只用於訪問所擁有的硬體資源
3.刪除共享記憶體函式 shmdt()
int shmdt(const void *shmaddr);
使用該函式並未真正刪除該記憶體段,只將該記憶體段的應用計數-1, 當該記憶體段的引用計數減為 0 時,核心才真正從刪除該記憶體段。
4.共享記憶體控制函式 shmctl()
int shmctl(int shmid, int cmd,struct shmid_ds *buf);
程序間通訊 和 執行緒間同步
前經常搞混,所以記錄下來。程序間通訊主要是指多個程序間的資料互動。而執行緒間同步主要指維護多個執行緒之間資料準確 一致性。一.程序間通訊主要有以下幾種方式 管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 ...
Linux 程序間通訊和同步(1) 管道
半雙工管道 單向通訊 shell 中 管道用 表示 ls l grep c 把 ls l 的輸出當做 grep c 的輸入程序建立管道,每次建立兩個檔案描述符來操作管道,成功返回 0 失敗返回 1 int pipe int filedes 2 侷限性 管道是由核心管理的乙個緩衝區,它的一端連線乙個程...
程序間通訊,同步
程序間通訊 管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 named pipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊號量 semophore 訊號量是乙個計數器,可以用來控...