共享記憶體是被多個程序共享的一部分物理記憶體。共享記憶體是程序間共享資料的一種最快的方法,乙個程序向共享記憶體區域寫入了資料,共享這個記憶體區域的所有程序就可以立刻看到其中的內容。
共享記憶體實現分為兩個步驟:
一、建立共享記憶體,使用shmget函式。
二、對映共享記憶體,將這段建立的共享記憶體對映到具體的程序空間去,使用shmat函式。
當乙個程序不再需要共享記憶體時,需要把它從程序位址空間中脫離。
int shmdt ( char *shmaddr );
建立
int shmget ( key_t key, int size, int shm*** );
key標識共享記憶體的鍵值: 0/ipc_private。 當key的取值為ipc_private,則函式shmget()將建立一塊新的共享記憶體;如果key的取值為0,而引數shm***中又設定ipc_private這個標誌,則同樣會建立一塊新的共享記憶體。
(i在p程序c 通訊)
返回值:如果成功,返回共享記憶體識別符號;如果失敗,返回-1。
對映
char * shmat ( int shmid, char *shmaddr, int flag);
引數:
shmid:shmget函式返回的共享儲存識別符號
返回值:
如果成功,則返回共享記憶體對映到程序中的位址;如果失敗,則返回- 1
Linux C通訊間程序(預習內容二)
現在linux使用的程序間通訊方式包括 1.管道 pipe 和有名管道 fifo 2.訊號 signal 3.訊息佇列 4.共享記憶體 5.訊號量 6.套接字 socket 管道通訊 管道是單向的 先進先出的,它把乙個程序的輸出和另乙個程序的輸入連線在一起。乙個程序 寫程序 在管道的尾部寫入資料,另...
Linux C程序間通訊(預習內容四)
訊號型別 常見的訊號 sighup 從終端上傳送的結束訊號 sigint 來自鍵盤的中斷訊號 ctrl c sigkill 該訊號結束結束訊號的程序 sigterm kill命令發出的訊號 sigchld 標示子程序停止或結束的訊號 sigstop 來自鍵盤 ctrl z 或除錯程式的停止執行訊號 ...
Linux C程序間通訊(預習內容八)
開啟 建立 include include include int msgget key t key,int msg 返回乙個msgget 的id key 鍵值,由ftok獲得。msg 標誌位。返回值 與健值key相對應的訊息佇列描述字。ipc creat 建立新的訊息佇列。建立 在以下兩種情況下,...