2 程序間通訊
二、上課沒有聽懂或者沒有理解的地方
三、當天學習的收穫
三階段學:
系統程式設計 包括 程序、ipc(程序間通訊,如訊號、管道、訊息佇列、共享記憶體、訊號量)
網路程式設計 包括 socket:tcp/ip,
執行緒:多執行緒、執行緒池
opencv
linux 一切皆檔案,通過檔案描述符對檔案讀寫。 是作業系統操作檔案或裝置的指標
虛擬機器 橋接模式可以聯網 nat模式有虛擬網絡卡,只能用於同乙個環境之間的通訊
資料傳輸
共享資料
通知事件 一般用訊號
資源共享 多個程序共享同樣的資源, 需要核心提供鎖和同步機制
程序控制
早期unix程序間通訊、基於system x程序間通訊、基於socket程序間通訊、posix程序間通訊
unix程序間通訊方式包括:管道、fifo、訊號
system v程序間通訊方式包括system v訊息佇列、system v訊號燈、system v共享記憶體
posix程序間通訊方式包括posix訊息佇列、posix訊號燈、posix共享記憶體
2.2.1 訊息佇列
訊息佇列是訊息的鍊錶
每乙個訊息佇列都有乙個id,核心可以有兩個三個訊息佇列,訊息佇列存在核心中
核心:一片記憶體
命令 ipcs 檢視程序通訊
訊息可以接收指定型別的訊息,如10號訊息
傳送訊息的結構體,格式固定 字元陣列長度有最大限制
struct msg_buf ;
typedef struct msg_buf msg_t;
建立或開啟訊息佇列 key_t 是訊息佇列的key值 ipc_excl 檢測是否存在 存在則開啟失敗 不存在則建立成功
int msgget(key_t key,int msg***); 作用 用來建立和訪問乙個訊息佇列
傳送訊息 引數1 訊息佇列的id 引數2 結構體指標 引數3 大小 引數4 先為0
//msgsnd(msgid, &msg, sizeof(struct msgbuf), 0);
接收訊息
msgrcv(msgid, &msg, sizeof(struct msgbuf), 10, 0);
無多學了一種ipc的方法
210129階段三除錯 程序間通訊 共享記憶體
2 共享記憶體 二 上課沒有聽懂或者沒有理解的地方 三 當天學習的收穫 訊息佇列可以接收指定型別的訊息,而不全是根據訊息的先後 系統預設最大訊息佇列個數 16個 msgmni 可修改 msgmax 乙個訊息裡面訊息的內容最大不超過8198 msgmnb 乙個佇列總的訊息內容的長度 16384 訊息佇...
程序間通訊(三)
管道呼叫 我們已經了解了高層的popen函式,現在我們繼續來了解低層的pipe函式。這個函式提供了乙個在兩個函式之間傳遞資料的方法,而不必呼叫shell來解釋所請求的命令的。同時他也為我們提供了更多的資料讀寫控制。pipe函式的原型如下 include int pipe int file descr...
程序間通訊(三)
管道呼叫 我們已經了解了高層的popen函式,現在我們繼續來了解低層的pipe函式。這個函式提供了乙個在兩個函式之間傳遞資料的方法,而不必呼叫shell來解釋所請求的命令的。同時他也為我們提供了更多的資料讀寫控制。pipe函式的原型如下 include int pipe int file descr...