linux中的共享記憶體實現程序間通訊

2021-08-18 01:21:23 字數 1683 閱讀 7795

《1》管道

(1)匿名管道(無名管道):實現有關係的程序間的通訊

(2)命名管道(有名管道):任意兩程序間通訊

詳情見:

《2》共享記憶體

在記憶體中開闢一段共享記憶體空間,共不同程序間訪問;

《1》建立共享記憶體:

int shmget(key_t key ,size_t size,int shm_***);

//key_t key:共享記憶體標識號,可以寫為ipc_private,代表讓系統分配乙個本地的ipc值

//size_t size:共享記憶體的大小

//int shm_***:給共享記憶體的許可權(3位八進位制)

//建立共享記憶體

注意:這裡出現了乙個新的命令,ipcs -m,顯示已經成功建立的共享記憶體可以看出已經成功建立乙個共享記憶體,其shmid為819219;共享它的程序數nattch為0

《2》附加共享記憶體區

void* shmat(int shmid,const* shmaddr,int shm***)

//int shmid:已經成功建立的shmid的標識號

//int shm***,一般為0,代表可讀可寫

int shmdt(const

void* shmaddr)

//附加上共享記憶體段

《4》共享記憶體讀寫的例子

//共享記憶體讀寫 

#include

#include

#include

#include

#include

#include

int main(int arg, char* args)

if(atoi(args[2]) ==2 )//2為讀

shmdt(shmbuf);//釋放本地位址

Linux中的程序通訊 共享記憶體

一 什麼是共享記憶體 顧名思義,共享記憶體就是允許兩個不相關的程序訪問同乙個邏輯記憶體。共享記憶體是在兩個正在執行的程序之間共享和傳遞資料的一種非常有效的方式。不同程序之間共享的記憶體通常安排為同一段物理記憶體。程序可以將同一段共享記憶體連線到它們自己的位址空間中,所有程序都可以訪問共享記憶體中的位...

linux 程序間共享記憶體

可以採用sysv的shmget shmat 實現。但是我更喜歡shm open mmap 更簡單。writer.c include include include include include include include include struct ofs stat int main voi...

linux程序通訊 共享記憶體

共享記憶體是ipc機制中的第二個。他允許連個不相關的程序訪問同一塊邏輯記憶體,能夠有效地實現兩個程序間資料傳遞。int shmget key t key,sizr t size,int shm 建立共享記憶體 key為共享記憶體段的命名,size為以位元組為單位的記憶體容量,shm 包含9位元許可權...