我的程序使用fork()/ execvp()启动一个帮助程序,我想在程序的GUI中显示帮助程序的输出。帮助程序的输出应该在我程序的GUI中嵌入的listview小部件中逐行显示。当然,我可以将输出重定向到一个文件,等待帮助程序完成,然后读取整个文件并显示它。但那不是最佳解决方案。理想情况下,我希望显示助手的输出,因为它被发送到stdout,即逐行,而助手仍在工作。
建议的方法是什么?
从头脑中,我想到的是以下解决方案,但我不确定它是否会起作用,因为一个进程将写入文件而另一个进程尝试从中读取:
1)在fork()之后使用execvp()启动这样的帮助:
./helper > tmpfile
2)之后,我的程序尝试打开" tmpfile"使用open()然后使用select()等待,直到从该文件中读取内容。一旦我的程序获得了一行输出,它就会将它发送到我的GUI的listview小部件。
这是应该怎么做的,还是我完全走错了路?
谢谢!