gpt4 book ai didi

c++ - Online Compiler - 在等待输入时拦截程序并自动输入

转载 作者:行者123 更新时间:2023-11-30 04:46:12 34 4
gpt4 key购买 nike

上下文

我为大学项目编写了一个玩具编译器。现在我正在为编译器制作一个网站,我想让访问者能够在它的网站上用我的语言编写代码,然后在浏览器的一种虚拟终端中运行它。有点像 Go languageHaskell language网站。

虚拟专用服务器 (VPS) 或某些云功能可以使用我的编译器编译用户编写的代码。然后服务器也可以运行它,但它必须监视程序以便:

  1. 如果程序向 STDOUT 写入任何内容,服务器会将数据发送到前端,前端将在虚拟终端上显示。一种方法可能是使用 > 重定向输出。

  2. 每次程序要求输入时,服务器都会通知前端。然后前端将在虚拟终端中键入的文本发回,服务器将其注入(inject)到 STDIN 中。

我想我会为服务器使用 NodeJS。

问题

我如何知道可执行文件何时等待输入以及当它等待输入时我如何提供它?是否有一些预构建的机制或者我是否必须编写监控程序?。 p>

以下是我想到的几种方法:

  1. 拥有一个运行生成的可执行文件的 Valgrind 风格的虚拟机。我绝对不会走这么远。

  2. 修改我的编译器,以便对于语言中的每个“输入”命令,它生成汇编代码以实际写入它需要输入的文件(由服务器轮询)并观察另一个文件的变化(服务器将写入传入输入的位置)。

我希望有更简单的方法。另外,如果我想做的事情有更具描述性的名称和文档,请告诉我。

最佳答案

How do I know when an executable waits for input

你不需要(需要)。只需在用户输入时读取虚拟终端,然后用您读取的内容填充标准输入。 何时以及如果可执行文件需要输入,它就会在那里。

这就是每个类 Unix 系统上任何真实或虚拟终端的工作方式。如果您要编写一个普通的终端仿真器,这就是您要做的。无需因为您通过 HTTP 连接到您的终端仿真器而采取任何不同的方式。

关于c++ - Online Compiler - 在等待输入时拦截程序并自动输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56908200/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com