在线编译器 - 等待输入并自动馈送输入时拦截程序



上下文

我为大学项目写了一个玩具编译器。现在,我正在为编译器创建一个网站,我希望允许访问者能够在其网站本身上以我的语言编写代码,然后在浏览器中以一种虚拟终端运行它。有点像Go语言和Haskell语言网站。

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

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

  2. 每次程序要求输入时,服务器都会通知前端。然后,前端将服务器注入stdin中的虚拟终端中输入的文本。

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

问题

我怎么知道可执行文件何时等待输入?我该如何喂食?是否有一些预构建的机制,或者我必须编写一个监视程序?。p>这是我考虑的几种方法:

  1. 具有运行生成的可执行文件的Valgrind样式虚拟机。我绝对不会走那么远。

  2. 修改我的编译器,以便对于语言中的每个"输入"命令,它会生成汇编代码以实际写入它需要输入的文件(服务器正在轮询(并观看另一个文件以进行更改(服务器将在其中写入输入(。

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

我怎么知道可执行文件等待输入

您不(需要(。只需在用户键入其中时读取虚拟终端,并用您阅读的内容填充标准输入即可。何时且如果 可执行文件需要输入,它将在那里。

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

相关内容

  • 没有找到相关文章

最新更新