Linux程序間通訊(五)

2021-07-22 14:00:16 字數 1329 閱讀 4975

共享記憶體:

使得多個程序可以訪問同一塊記憶體空間,是最快的可用ipc形式。是針對其他通訊機制執行效率較低而設計的。往往與其它通訊機制,如訊號量結合使用,來達到程序間的同步及互斥。

示例:comm.h

1 #pragma once

2 3 #include4 #include5 #include6

7 #define _proj_path_ "/tmp"

8 #define _proj_id_ 0x6666

9 10 int creat_shm(int shm_size);

11 int get_shm();

12 int destory_shm(int shm_id);

13 void* at(int shm_id);

14 int dt(void*);

comm.c

1 #include"comm.h"

2 3 static int comm_shm(int shm_size,int flags)

4 11 int shm_id=shmget(_key,shm_size,flags);

12 if(shm_id<0)

13

16 return shm_id;

17 }

18 int creat_shm(int shm_size)

19 23 int get_shm()

24 28 void* at(int shm_id)

29 32 int dt(void* addr)

33 36 int destory_shm(int shm_id)

37 43 return 0;

44 }

server.c

1 #include"comm.h"

2 int main()

3 12 dt(addr);

13 destory_shm(shm_id);

14 return 0;

15 }

client.c

1 #include"comm.h"

2 3 int main()

4 16 dt(addr);

17 return 0;

18 }

執行結果

Linux程序間通訊

程序間通訊 ipc interprocess communication 基本機制 訊號 管道及命名管道 訊息佇列 共享主存 訊號量 套接字。訊號 全稱軟中斷訊號,是在軟體層次上對中斷機制的一種模擬,它也是程序間通訊機制中唯一的非同步通訊機制。linux訊號處理函式可分為訊號安裝函式 訊號傳送函式和...

Linux程序間通訊

謝謝nonoob糾錯 我們在linux訊號基礎中已經說明,訊號可以看作一種粗糙的程序間通訊 ipc,interprocess communication 的方式,用以向程序封閉的記憶體空間傳遞資訊。為了讓程序間傳遞更多的資訊量,我們需要其他的程序間通訊方式。這些程序間通訊方式可以分為兩種 1.管道與...

Linux程序間通訊

謝謝nonoob糾錯 我們在linux訊號基礎中已經說明,訊號可以看作一種粗糙的程序間通訊 ipc,interprocess communication 的方式,用以向程序封閉的記憶體空間傳遞資訊。為了讓程序間傳遞更多的資訊量,我們需要其他的程序間通訊方式。這些程序間通訊方式可以分為兩種 1.管道與...