gpt4 book ai didi

c - 将程序输出重定向到我的程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:59 25 4
gpt4 key购买 nike

我的程序使用 fork()/execvp() 启动了一个帮助程序,我想在我的程序的 GUI 中显示帮助程序的输出。助手的输出应该在我程序的 GUI 中嵌入的 ListView 小部件中逐行显示。当然,我可以将输出重定向到一个文件,等待助手完成,然后读取整个文件并显示它。但这不是最佳解决方案。理想情况下,我想在助手仍在工作时显示助手的输出,因为它被发送到标准输出,即逐行显示。

执行此操作的建议方法是什么?

从我的脑海中浮现出以下解决方案,但我不确定它是否会起作用,因为一个进程将写入文件,而另一个进程则试图从文件中读取:

1) 在 fork() 之后使用 execvp() 像这样启动助手:

./helper > tmpfile

2) 之后,我的程序尝试使用 open() 打开“tmpfile”,然后使用 select() 等待直到从该文件中读取内容。一旦我的程序获得了一行输出,它就会将它发送到我的 GUI 的 ListView 小部件。

这是应该怎么做还是我完全走错了路?

谢谢!

最佳答案

您应该打开一个pipe 并使用select 监控子进程的进度。如果您只需要单向通信,您也可以使用 popen,在这种情况下,您将通过调用返回的 FILE* 上的 fileno 来获取文件描述符

参见:

关于c - 将程序输出重定向到我的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29372872/

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