我的程序使用fork()/ execvp()啓動一個幫助程序,我想在程序的GUI中顯示幫助程序的輸出。幫助程序的輸出應該在我的程序的GUI中嵌入的listview小部件中逐行顯示。當然,我可以將輸出重定向到一個文件,等到助手完成後再讀取整個文件並顯示出來。但這不是一個最佳解決方案。理想情況下,我希望顯示助手的輸出,因爲它是發送到標準輸出,即逐行,而助手仍在工作。重定向程序輸出到我的程序
這樣做的建議方法是什麼?
從我的頭頂開始,想到的是以下解決方案,但我不確定它是否可以工作,因爲一個進程將寫入該文件而另一個進程正在嘗試讀取該文件:
1)叉後開始像這樣使用execvp()輔助():
./helper > tmpfile
2)在那之後,我的程序試圖打開 「TMPFILE」 使用open(),然後使用select()等待,直到有文件讀取。一旦我的程序獲得了一行輸出,它將它發送到我的GUI的listview小部件。
這是應該怎麼做,或者我完全在錯誤的軌道上嗎?
謝謝!
關於使用管道如何?然後你的程序可以簡單地從'stdin'中讀取(是的,你仍然可以使用'select')。所以'./helper |而不是使用your_program'。 – 2015-03-31 15:53:19
謝謝,我甚至沒有想到那個......可能是最簡單的解決方案。 – Andreas 2015-03-31 15:59:15