Linux C语言管道,分支和信号

时间:2015-06-05 02:19:41

标签: c linux process pipe signals

我需要家庭作业的帮助,我必须通过使用过程,管道,叉子和信号来创建罐装配线的模拟,我不能使用另一种IPC机制作为互斥或信号量。

现在,我知道如何分叉一个过程并生一个孩子,在这种情况下,我需要创建一个罐子,然后将它逐个传递到几个站点(子过程),这些站就像融化,绘画,包装等等。

我应该使用can的结构吗?或子进程的PID?

问题是我如何从A站发送到B站,然后从B发送到C,并且使用管道,我知道如何使用管道从父母发送到一个孩子,但在这种情况下我需要传达所有的孩子(站)

此外,这必须在使用QT或GTK的GUI上(我更喜欢GTK,即使我不知道它看起来更简单)并且程序需要如果我暂停模拟它必须告诉我多少罐是包,哪个站有罐头,并生成最终报告,每100罐,他们形成一个罐包,我需要说有多少包。

我已经阅读了很多指南,看了一些视频,尝试了一些例子,但我现在无法知道如何知道孩子我现在所以我知道哪个电台是哪个,并且知道该怎么做站,我不知道如何一个接一个地通过所有站。

我将感谢你能给我的所有帮助,对不起我的英语。感谢

1 个答案:

答案 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