我需要家庭作业的帮助,我必须通过使用过程,管道,叉子和信号来创建罐装配线的模拟,我不能使用另一种IPC机制作为互斥或信号量。
现在,我知道如何分叉一个过程并生一个孩子,在这种情况下,我需要创建一个罐子,然后将它逐个传递到几个站点(子过程),这些站就像融化,绘画,包装等等。
我应该使用can的结构吗?或子进程的PID?
问题是我如何从A站发送到B站,然后从B发送到C,并且使用管道,我知道如何使用管道从父母发送到一个孩子,但在这种情况下我需要传达所有的孩子(站)
此外,这必须在使用QT或GTK的GUI上(我更喜欢GTK,即使我不知道它看起来更简单)并且程序需要如果我暂停模拟它必须告诉我多少罐是包,哪个站有罐头,并生成最终报告,每100罐,他们形成一个罐包,我需要说有多少包。
我已经阅读了很多指南,看了一些视频,尝试了一些例子,但我现在无法知道如何知道孩子我现在所以我知道哪个电台是哪个,并且知道该怎么做站,我不知道如何一个接一个地通过所有站。
我将感谢你能给我的所有帮助,对不起我的英语。感谢
答案 0 :(得分:1)
来自评论的提议,以伪代码(变成C是作业,所以我不这样做):
make P-A pipe
make A-B pipe
make B-C pipe
if fork()
// process A
while (read can from P-A pipe)
do something to can
write can to A-B pipe
else if fork()
// process B
while (read can from A-B pipe)
do something to can
write can to B-C pipe
else if fork()
// process C
while (read can from B-C pipe)
do something to can
write can to final output
else
// parent
get can from input/file (or make a new can)
write can to P-A pipe