天天看點

linux基礎——IPC程序間通信

IPC程序間通訊

消息隊列

向消息隊列發送消息和接收消息

代碼示例

共享記憶體

信号量集

使用指令ipcs可以檢視IPC的對象。

linux基礎——IPC程式間通信

ftok

1.第一步,擷取一個鍵值。

2. 第二步,通過鍵值擷取一塊記憶體,将這塊記憶體的id傳回。

3. 第三部,通過記憶體id來操作這塊記憶體。

ftok.c

執行結果

linux基礎——IPC程式間通信

通過鍵值擷取一塊記憶體,将這塊記憶體的id傳回,需要使用到msgget擷取核心記憶體的id。

通過鍵值擷取消息隊列的id

msgget.c

linux基礎——IPC程式間通信

msgsnd

msgrcv

将一個消息放入消息隊列中。

processA.c

從消息隊列中擷取消息并顯示

processB.c

linux基礎——IPC程式間通信

根據鍵值擷取共享記憶體的id,通過shmget擷取共享記憶體id。

int shmget(key_t key, size_t size, int shmflg);

将共享記憶體映射到程序的虛拟位址空間中,使用shmat

shmat(2)

*int shmdt(const void shmaddr);

建立共享記憶體段。

shm.c

linux基礎——IPC程式間通信

使用共享記憶體完成程序間通信:

shmA.c

shmB.c

linux基礎——IPC程式間通信

具體參考代碼示例

mycp.c

linux基礎——IPC程式間通信