Php 向标准输入值以进行在线判断
我在网上做裁判时遇到了一点问题 到目前为止我做了什么? 因此,我的php代码获取用户代码并将其交给函数Compile(),该函数编译代码并报告编译是否成功。这部分代码运行得很好 现在剩下的就是运行代码和评估 我的问题 我的问题是如何为用户处理stdin输入。用户通常使用scanf、BufferedReader等从标准输入获取输入,这些值通常使用键盘获取。现在假设我已经在一个文件中写入了这些值。我将如何向他们提供这些价值 我的尝试 嗯,我在寻找各种方法,我遇到了这个Php 向标准输入值以进行在线判断,php,stdin,Php,Stdin,我在网上做裁判时遇到了一点问题 到目前为止我做了什么? 因此,我的php代码获取用户代码并将其交给函数Compile(),该函数编译代码并报告编译是否成功。这部分代码运行得很好 现在剩下的就是运行代码和评估 我的问题 我的问题是如何为用户处理stdin输入。用户通常使用scanf、BufferedReader等从标准输入获取输入,这些值通常使用键盘获取。现在假设我已经在一个文件中写入了这些值。我将如何向他们提供这些价值 我的尝试 嗯,我在寻找各种方法,我遇到了这个 fopen('php://st
fopen('php://stdin', 'w')
如果我相信它像一个文件一样工作,那么如果多个用户同时使用stdin,它不会引起问题。如果您有编译过的代码并且知道它的语言,那么它会简单一些 您可以使用函数来执行代码,也可以将其用作命令,类似这样(对于c程序,并经过测试):
$output=array();
exec(“./main
如果您现在检查$output变量,它在数组中为输出的每一行都有一个条目
希望这有帮助。确切地说,exec是PHP中所需的全部 但是,只要您不仅需要运行,还需要评估,您就应该 构建一些shell脚本来运行、馈送、接收输出并检查输出是否正确。 记住正确地沙箱脚本,因为它是安全威胁 Exec btw.还提供了第三个参数,即返回值。只要您使用自己的返回代码构建自己的shell脚本,它就非常有用 exec('./script.sh',$output,$exit_代码)
请记住,php脚本必须具有文件和目录的权限。^请为这个漂亮的公式化问题向此人投一些赞成票。如果我理解正确,您将运行用户代码并为其提供输入?如果是这样的话,最好的方法是让后台作业执行他们的代码并重定向文件:
/they/program<输入文件
将这个问题读3遍,仍然没有任何意义。是的,输入重定向,我完全忘记了。并且为了将来的参考,我们还可以使用不知道的proc_open函数。很酷!特别是在使用管道时。:)
$output = array();
exec("./main < sample_input.txt", $output);