共享記憶體:
使得多個程序可以訪問同一塊記憶體空間,是最快的可用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.管道與...