を使用してメッセージキューを介してデータを送信するプロセスが 1 つありますmsgsnd
。でキューから読み取る別のプロセスmsgrcv
。読み取りプロセスは、続行する前にすべてのメッセージを受信するまで待機する必要があります。すべてのメッセージが送信されたことをどのように伝えることができますか?
私が行ってきた方法は、送信者がすべてのメッセージを送信した後、while ループでキュー内のメッセージの数をチェックすることです。メッセージがなくなると、キューを閉じます。
これは、読み取りプロセスに他のことを続けるように指示します。ただし、これはあまり信頼できないようです。多くの場合、送信プロセスはキューのステータスをチェックする無限ループに陥ります。
EOF メッセージを送信して、読み取りプロセスにそれを監視させる方法はありますか? 次に、EOF を送信して、送信プロセスを終了させることができます。