IPCメッセージ・キュー。 msgrcvシステムコール。システムV.どのようにループから抜け出すために
-
18-09-2019 - |
質問
私はループ内でメッセージを取得していたから、メッセージキューを持っています。問題は、私はループを終了する方法がわからないということです。それがいっているようにmsgrcv戻っはsize_t型と入力します。私は、ループを終了することができますので、どのような値Iは、戻り値を比較する必要がありますか?
while(msgrcv(msqid, &msgreceived, sizeof(msgreceived), BUFFER_CHANGED, 0) != -1){
printf("%d %d %d %d ",msgreceived.value0,msgreceived.value1,msgreceived.value2,msgreceived.value3);
解決
今後のメッセージを待っている間、あなたの最後のパラメータはIPC_NOWAIT
、msgrcv
ブロックが含まれていないので。
すぐに読むべきメッセージがない場合は、msgrcv(..., ... | IPC_NOWAIT)
は(size_t)-1
と設定errno = ENOMSG
を返します。
所属していません StackOverflow