Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在我的 Compilers 类中实现了一个编译器,我正在使用 Qt & C++。
从源代码生成机器代码后,我正在执行将执行代码的虚拟机。
我在这里遇到一个问题,我正在使用readyRead()信号从虚拟机获取输出,但是我怎么知道虚拟机想要从用户那里读取数据?
readyRead()
每次机器要求输入时,我想向用户显示一个输入对话框。
实际上,该过程的输入流的设计方式不必是真实的用户输入。例如,如果您将文件重定向到应用程序的输入,则没有人要求输入下一部分。在这种情况下,当您调用 std::cin >> a 时,应用程序或操作系统不会生成任何信号,并且 QProcess 无法知道子应用程序正在等待输入。
我的建议是使用一些简单的 IPC,如匿名管道来通知父进程此类事件。如果可能,您可以在子进程标准输出中使用某些特定标记来发送此类通知。
如果您正在运行的虚拟机是第三方应用程序,那么我认为解析它的输出搜索通知用户需要一些输入是唯一的选择。