我应该在 Unix 中编写一个 C 应用程序,这样N
子进程将从父进程分叉,我将向这些子进程发送消息,而子进程应该相互发送消息。
但是问题是,我需要将消息发送到特定的目标子进程。即父母将发送给孩子1,孩子1将发送给孩子2,......然后孩子n
将发送给1
(循环)。
问题是,如果我只创建一个消息队列,任何n
孩子都可能使消息出队(因为它们中的任何一个都可能由于内核调度程序而在父进程之后运行),因此消息将在错误的进程中出队!
在我的应用程序中,将有最大值。队列中一次有 1 条消息。我想到的唯一解决方案是创建n
不同的消息队列并将消息传递到适当的队列,以便特定的目标进程可以接收它。但我认为我必须有一个更合法的解决方案。
有任何想法吗?
约束:不允许进程之间的管道,我知道mq在这里效率低下。我也会实现它们,两者都是必需的。PS这是一个家庭作业(该死的我是http://canyoudomyhomework.com的创建者),但这不仅仅是一个家庭作业,一个具有挑战性的问题恕我直言。)