ループ内でメッセージを取得するメッセージ キューがあります。問題は、ループを終了する方法がわからないことです。msgrcv は size_t 型を返すため、続行します。ループを終了するには、戻り値とどの値を比較すればよいですか?
while(msgrcv(msqid, &msgreceived, sizeof(msgreceived), BUFFER_CHANGED, 0) != -1){
printf("%d %d %d %d ",msgreceived.value0,msgreceived.value1,msgreceived.value2,msgreceived.value3);