5

プロセスが で IPC メッセージを読み取るとどうなりmsgrcvますか?

同じメッセージをmtype複数回読むことができないのはなぜですか?

使用されている構造のコード:

struct msgbuff{
    long mtype;
    char mtext[150];   
};
4

1 に答える 1

2

メッセージは一度だけ読むことができます。これは、msgrcv マンページがその機能を説明する方法です。

msgrcv() システム コールは、msqid で指定されたキューからメッセージを削除し、msgp が指すバッファに配置します。

キューをのぞく方法はありません。必要な場合は、msgrcv() を使用してキューから項目をポップし、msgsnd() を使用して再度追加することができます。失敗するリスク(キューがいっぱい、メモリ不足など)があるため、絶対確実ではありません。

于 2013-01-14T16:12:38.347 に答える