4

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

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

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

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

4

1 回答 1

1

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

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

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

于 2010-05-08T13:23:26.993 回答