gpt4 book ai didi

c - Linux C语言管道、 fork 和信号

转载 作者:行者123 更新时间:2023-11-30 21:37:32 25 4
gpt4 key购买 nike

我需要家庭作业方面的帮助,问题是我必须通过使用进程、管道、 fork 和信号来创建 jar 头装配线的模拟,我不能使用其他 IPC 机制作为互斥体或信号量。

我知道如何fork一个进程并产生一个子进程,在这种情况下,我需要创建一个 jar ,然后将它一个接一个地通过几个站(子进程),这些站就像熔化,绘画,包装,以及像这些。

我应该使用 jar 头结构吗?或者子进程的PID?

问题是我怎样才能将一 jar 从A站发送到B站,然后从B站发送到C站,并且使用管道,我知道如何使用管道从父级向一个子级发送消息,但在这种情况下我需要与所有子站(电台)进行通信

此外,这必须在使用 QT 或 GTK 的 GUI 上进行(我更喜欢 GTK,即使我不太了解它似乎更简单),并且程序需要,如果我暂停模拟,它必须告诉我有多少 jar 被包装了,哪个站有 jar ,并生成最终报告,每100个 jar ,它们形成一个 jar 包,我需要说做了多少包。

我读了很多指南,看了一些视频,尝试了一些例子,但我就是不知道如何知道我目前在哪个 child 中,这样我就可以知道哪个站是哪个站并知道该怎么做在那个车站,我不知道如何将 jar 头一一传递到所有车站。

最佳答案

来自评论的伪代码提案(转换成 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

关于c - Linux C语言管道、 fork 和信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30657341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com