一千萬個為什麽

搜索

我如何知道QProcess何時想要讀取輸入?


I'm implementing a compiler in my Compilers class, I'm using Qt & C++.

從源代碼生成機器代碼後,我正在執行將執行代碼的虛擬機。

我在這裏遇到問題,我正在使用 readyRead()信號從虛擬機獲取輸出,但我怎麽知道虛擬機想要從用戶讀取數據?

我想在每次機器要求輸入時向用戶顯示輸入對話框。

最佳答案

Actually input stream of the process is designed in the way it's not necessary to be real user input. For example if you are redirecting file to the input of your application you have nobody to ask for next portion of input. In this case when you call std::cin >> a there are no signal generated by application or operation system and QProcess doesn't have any way to know that child application is waiting for input.

我的建議是使用一些簡單的IPC,如匿名管道來通知父進程有關此類事件。如果可以,您可以使用子進程標準輸出中的某些特定標記來發送此類通知。

如果您運行的虛擬機是第三方應用程序,那麽我認為解析其輸出搜索通知用戶需要一些輸入的東西是唯一的選擇。

轉載註明原文: 我如何知道QProcess何時想要讀取輸入?

猜你喜歡