我怎么知道QProcess何时想要读取输入?

时间:2010-05-08 12:33:38

标签: c++ qt qprocess

我正在我的Compilers类中实现一个编译器,我正在使用Qt& C ++。

从源代码生成机器代码后,我正在执行将执行代码的虚拟机。

我在这里遇到问题,我正在使用readyRead()信号从虚拟机获取输出,但我怎么知道虚拟机想要从用户那里读取数据呢?

每次机器要求输入时,我都想向用户显示一个输入对话框。

1 个答案:

答案 0 :(得分:1)

实际上,流程的输入流的设计方式不一定是真正的用户输入。例如,如果您将文件重定向到应用程序的输入,则无需请求下一部分输入。在这种情况下,当您调用std :: cin>> a应用程序或操作系统没有生成信号,QProcess也没有办法知道子应用程序正在等待输入。

我的建议是使用一些简单的IPC(如匿名管道)来通知父进程有关此类事件。如果可以,您可以使用子进程标准输出中的某些特定标记来发送此类通知。

如果您运行的虚拟机是第三方应用程序,那么我认为解析其输出搜索通知用户需要一些输入的东西是唯一的选择。