在c中创建从一个文件到另一个文件的管道



在我的学校,我们必须用C语言编写这个作业:

PART2:写三个程序A, B, c。

A将使用fork()exec()系统调用启动B和C。

当启动时,它将重定向B和C的输出和输入到管道

B将从其标准输入接收数字并对其进行递增到5时,将结果打印到其标准输出中。

C将从它的标准输入中接收一个数字并将其插入2,在其标准输出中打印结果。

A的作用是将这个计算用一个随机数播种到B,然后从B,检索结果寄给C,从C,结果寄给B,等等,直到这个重复了100次。

如果A在发送数据到另一个进程之间等待1秒,那就太好了。

A将在它自己的标准输出中打印所有来自其他进程,例如:

001. A -> B 10B -> A 15A -> C 15C -> A 7002. A -> B 7B -> A 12...

我已经有文件B和C.然而,我不知道如何编程文件A控制一切。有人能帮我吗?

每个进程持有一个文件描述符表,当fork()时,子进程从父进程继承一个表的副本。如果你在进程a中有一个管道,那么当你分叉时,子进程也会在它的表中有管道的文件描述符。另一个要求是B和C将通过标准输入接收,也就是fd0。您可以使用dup2函数在标准输入的FD和管道的FD之间进行覆盖。这样,fd0现在将被定向到管道,当你分叉到进程B时,它的标准输入现在将来自管道。你可以做同样的标准输出FD(1)。我建议使用dup()保留原始标准I/O FD的副本,以便在完成分叉后为进程a恢复它们。

相关内容

最新更新