在C进程间通信中,我们可以选择调用msgrcv作为阻塞调用或非阻塞调用。但似乎msgsnd没有相同的灵活性。
我尝试使用
msgsnd(msgid, (void *)&my_message, MAX_TEXT, IPC_NOWAIT)
但它的行为方式与
完全相同msgsnd(msgid, (void *)&my_message, MAX_TEXT, 0)
我期待的是什么
msgsnd(msgid, (void *)&my_message, MAX_TEXT, 0)
将被阻止,直到另一端有人接收为止。但是,即使在另一侧没有接收功能,它也会进入代码的下一行。 我不明白为什么。
那么msgsend中根本没有阻塞机制吗?