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