gpt4 book ai didi

c++ - 使用一个文件作为两个程序的生产者消费者系统的缓冲区

转载 作者:行者123 更新时间:2023-11-28 01:03:36 26 4
gpt4 key购买 nike

我有两个程序,其中一个将一些条目写入文件,另一个从文件中读取所有条目并处理它们。

目前,文件是按顺序执行的。这意味着,第一个程序完全生成文件并在第二个程序运行之前退出。现在我希望第二个程序可以在生产者-消费者方式下同时运行,无需太多修改。我知道我应该使用进程间通信,但此时我想对程序进行最少的更改以使其运行。

具体来说,我希望第二个程序实时处理第二个文件中的条目,因为它们是由第一个文件生成的。

我在 ubuntu 11.04 上使用 gcc

最佳答案

如果您使用的是类 Unix 操作系统,我可以建议 pipes ?修改您的第一个程序以写入标准输出(而不是打开文件并传递 ofstream 周围的引用,而是传递 std::cout )。修改您的第二个程序以从标准输入读取(同上,但将您的 ifstream 引用替换为 std::cin )。

然后,代替

prog1 -o some-tmp-file.txt
prog2 -i some-tmp-file.txt

这样做:

prog1 | prog2


编辑:如果您现有的程序基于 <cstdio>而不是 <iostream> ,同样的原则适用。使用 stdout而不是你现有的 FILE*在第一个程序中。用途 stdin而不是你的 FILE*在第二个程序中。


编辑 #2:如果您不想对第二个程序做任何更改,并且可能只对第一个程序进行最小更改,请尝试使用 named pipes .

mkfifo /tmp/some-tmp-file.txt
prog2 -i /tmp/some-temp-file.txt &
prog1 -o /tmp/some-temp-file.txt

关于c++ - 使用一个文件作为两个程序的生产者消费者系统的缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7529656/

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