Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 向标准输入值以进行在线判断_Php_Stdin - Fatal编程技术网

Php 向标准输入值以进行在线判断

Php 向标准输入值以进行在线判断,php,stdin,Php,Stdin,我在网上做裁判时遇到了一点问题 到目前为止我做了什么? 因此,我的php代码获取用户代码并将其交给函数Compile(),该函数编译代码并报告编译是否成功。这部分代码运行得很好 现在剩下的就是运行代码和评估 我的问题 我的问题是如何为用户处理stdin输入。用户通常使用scanf、BufferedReader等从标准输入获取输入,这些值通常使用键盘获取。现在假设我已经在一个文件中写入了这些值。我将如何向他们提供这些价值 我的尝试 嗯,我在寻找各种方法,我遇到了这个 fopen('php://st

我在网上做裁判时遇到了一点问题

到目前为止我做了什么?

因此,我的php代码获取用户代码并将其交给函数Compile(),该函数编译代码并报告编译是否成功。这部分代码运行得很好

现在剩下的就是运行代码和评估

我的问题

我的问题是如何为用户处理stdin输入。用户通常使用scanf、BufferedReader等从标准输入获取输入,这些值通常使用键盘获取。现在假设我已经在一个文件中写入了这些值。我将如何向他们提供这些价值

我的尝试

嗯,我在寻找各种方法,我遇到了这个

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);