msgrcv

    0熱度

    1回答

    我使用msgrcv函數從消息隊列中讀取消息。當我讀取已知長度數據時,它工作正常。有些情況下我的消息長度是可變的。在這種情況下,我如何分配只需要的內存量,並從消息隊列中讀取消息,而不會丟失消息隊列中的任何數據。請給出想法來解決這個問題。 說明: 在IBM消息隊列中,當我們讀取超出的長度數據時,它將消息的實際大小填充到我們傳遞mqget函數的結構中。像這樣,是否有任何方法可以在消息隊列中執行此操作。

    1熱度

    1回答

    親愛的朋友, 任何想法爲什麼msgrcv正在接收空白緩衝區? 下面是代碼: enter code here #include <sys/msg.h> #include <unistd.h> #include <sys/types.h> #include <stdio.h> #include <string.h> typedef struct mymsg { long mty

    0熱度

    1回答

    我有兩個程序通過IPC隊列來回發送和接收消息。但是,有時msgrcv函數會收到一條空白消息,而不是接收實際通過隊列發送的內容。我已經註釋了一個我認爲應該可以工作的修復程序,但我想在此查看,看看這是否是使用msgrcv和msgsnd的正確方法。 msgrcv: int readqueue(int qid, long type, char *msg) { int retval;

    0熱度

    3回答

    我需要知道如果消息嵌入在IPC隊列中。 在實踐中,我需要知道,當一個調用msgrvc函數時,我得到的第一個消息進入隊列或選定的消息是隨機的。 現在,我提出這個問題,因爲當內部的一部分代碼msgrcv得到一個消息,它不是針對該代碼,我通常要求消息e讀取隊列中的以下消息。 什麼我想知道的就是給定,例如,他下面的消息 MSGA,MSGB,MSGC ,存儲隊列 內如果讀MSGA和reque它,我將得到隊列

    0熱度

    2回答

    您好我正在使用一些共享內存在不同的進程讀取和寫入數據。我正在使用消息隊列來存儲數據在讀取和寫入操作之間發生更改的消息。 /* struct that defines a message */ struct msgbuf{ long mtype; /* must be positive */ int childId; //ID of child sending messa

    0熱度

    1回答

    我有一個消息隊列,我從中獲取消息循環。問題是我不知道如何退出循環。 msgrcv返回類型size_t,所以它繼續前進。我應該比較什麼值的返回值,所以我可以退出循環? while(msgrcv(msqid, &msgreceived, sizeof(msgreceived), BUFFER_CHANGED, 0) != -1){ printf("%d %d %d %d ",msgrecei

    0熱度

    1回答

    我有更多的三個定時器運行從主要如下所示,我已經定義了一個主要部分的消息隊列。我的計時器到期時間在10(最大)。 爲什麼當計時器到期時「msgrcv」給出錯誤,如「中斷的系統調用」? timer_t timer1 = create_timer(TT_SIGUSR1); install_sighandler(TT_SIGUSR1, signal_handler); set_time

    1熱度

    2回答

    我遇到了問題。 我有一個過程,我們假設它是一個客戶端,一個叫做服務器的進程。客戶端和服務器之間通過相同的隊列進行通信。假設一個客戶向服務器發送一個消息(請求),所以服務器對它進行處理,並且應該向客戶發回消息確認或失敗。假設確認有一個long type = 1500101,並且失敗有long type = 1500102。 是否有可能(在C中使用msgrcv)等待只有這兩種類型的消息(客戶端)? 如

    -1熱度

    1回答

    這是我的代碼,並在最後一部分,msgrecv不接受隊列消息accourding正確preient,例如:10是最重要的接受然後鍵入= 20然後鍵入= 30 ...這是我的目標是以這種方式接受消息... 任何人都可以告訴我問題在哪裏? 因爲驗收是accoures沒有優先級.. 謝謝.. 即代碼 #include <sys/msg.h> #include <unistd.h> #include