2013-02-20 36 views
1

我遇到了問題。IPC msgrcv - 只接收兩種特定類型的消息

我有一個過程,我們假設它是一個客戶端,一個叫做服務器的進程。客戶端和服務器之間通過相同的隊列進行通信。假設一個客戶向服務器發送一個消息(請求),所以服務器對它進行處理,並且應該向客戶發回消息確認或失敗。假設確認有一個long type = 1500101,並且失敗有long type = 1500102

是否有可能(在C中使用msgrcv)等待只有這兩種類型的消息(客戶端)? 如果沒有,做這種機制的最好方法是什麼?

回答

1

不,您不能接收多種消息類型。它可以是全部或只是一種類型或全部,除了單一類型。

可以做的是叫什麼msgrcvIPC_NOWAIT標誌兩次,一次爲每個類型。

0

客戶端和服務器之間通過相同的隊列進行通信。

我認爲,客戶端和服務器有單獨的個體隊列。然後服務器可以接收所有在其隊列中發送的消息(使用msgtype爲0)。它可以根據收到的消息的msgtype進行切換,並執行必要的操作。