我遇到了問題。IPC msgrcv - 只接收兩種特定類型的消息
我有一個過程,我們假設它是一個客戶端,一個叫做服務器的進程。客戶端和服務器之間通過相同的隊列進行通信。假設一個客戶向服務器發送一個消息(請求),所以服務器對它進行處理,並且應該向客戶發回消息確認或失敗。假設確認有一個long type = 1500101
,並且失敗有long type = 1500102
。
是否有可能(在C中使用msgrcv)等待只有這兩種類型的消息(客戶端)? 如果沒有,做這種機制的最好方法是什麼?
我遇到了問題。IPC msgrcv - 只接收兩種特定類型的消息
我有一個過程,我們假設它是一個客戶端,一個叫做服務器的進程。客戶端和服務器之間通過相同的隊列進行通信。假設一個客戶向服務器發送一個消息(請求),所以服務器對它進行處理,並且應該向客戶發回消息確認或失敗。假設確認有一個long type = 1500101
,並且失敗有long type = 1500102
。
是否有可能(在C中使用msgrcv)等待只有這兩種類型的消息(客戶端)? 如果沒有,做這種機制的最好方法是什麼?
不,您不能接收多種消息類型。它可以是全部或只是一種類型或全部,除了單一類型。
你可以做的是叫什麼msgrcv
與IPC_NOWAIT
標誌兩次,一次爲每個類型。
客戶端和服務器之間通過相同的隊列進行通信。
我認爲,客戶端和服務器有單獨的個體隊列。然後服務器可以接收所有在其隊列中發送的消息(使用msgtype爲0)。它可以根據收到的消息的msgtype進行切換,並執行必要的操作。