Linux系統程式設計 程序間通訊 訊息佇列

2021-10-22 12:06:48 字數 1348 閱讀 2745

#include#include#include#include#define msg_text 512

// 訊息結構體

struct my_msg_st

;int main(int argc, char* ar**)

while (idx < 5)

idx++;

}return 0;

}

#include#include#include#include#define msg_text 512

/** * 訊息佇列不會阻塞往程序往訊息佇列中寫入訊息的

* 即時另外乙個程序沒有從訊息佇列中接收訊息,

* 比如,訊息佇列寫入程序寫完所有的訊息之後,才開始

* 開啟訊息佇列接收程序,依然會收到所有傳送的訊息。

* */

struct my_msg_st ;

int main(int argc, char* ar**)

while (idx<5)

// 列印訊息

printf("msg type:%ld\n", data.my_msg_type);

printf("msg content:%s\n", data.anytext);

idx++;

} // 刪除訊息佇列

// msgctl 函式功能是對指定訊息佇列進行控制

// ipc_rmid 該取值表示從核心中刪除指定命令 是乙個command

// 配合 msqid 表示從核心中刪除訊息佇列

if (msgctl(msqid, ipc_rmid, 0)==-1)

return 0;

}

輸出如下:

zfz:demo zhangfengzhou$ ./msgsend

enter some text:hello world

enter some text:hello world

enter some text:hello world

enter some text:hello world

zfz:demo zhangfengzhou$ ./msgrcv

msg type:2

msg content:hello world

msg type:2

msg content:hello world

msg type:3

msg content:hello world

msg type:3

msg content:hello world

abort trap: 6

linux系統程式設計 程序間通訊 pipe

程序間通訊 pipe 每個程序各自有不同的使用者位址空間,任何乙個程序的全域性變數在另乙個程序中都看不到,所以程序之間要交換資料必須通過核心,在核心中開闢一塊緩衝區,程序1把資料從使用者空間拷到核心緩衝區,程序2再從核心緩衝區把資料讀走,核心提供的這種機制稱為程序間通訊 ipc,interproce...

Linux系統程式設計 程序間通訊 IPC

利用檔案進行程序間通訊的程式示例 include include include include include include intmain if pid 0 write fd1,str,strlen str printf child wrote over n if pid 0 sleep 1 ...

Linux系統程式設計 程序間通訊(一)

linux系統主要的程序間通訊機制如下 無名管道 pipe 及命名管道 named pipe 無名管道可用於具有父子關係程序間的通訊 命名管道用於無父子關係的程序之間的通訊。無父子關係的程序可將資訊傳送到某個命名管道中,通過管道名讀取資訊 訊號 signal 程序間的高階通訊方式,用於通知其他程序有...