php - 通过 shell_exec 设置 java 代码执行的时间限制

标签 php linux shell command-line kill-process

我在 http://joomla5.guru99.com/try-java-editor.html 开发了一个在线 Java 代码编辑器我正在使用 php 的 shell_exec 函数调用 javac 并执行 java 代码。

$result = shell_exec('javac' .$soucejavafile. '2>&1');
and running classfile by
$result= shell_exec('java' .$classfile. '2>&1');

现在出于安全目的,我想为这个 java 代码执行设置时间限制。例如,Java 代码的执行应该在一段时间后停止,并且它的所有进程都必须被杀死

我试过了 ulimit 和 ps 命令,但无法实现。

请在正确的方向上帮助我,并帮助我实现这一目标。

问候。

最佳答案

您可以通过 3 种方式做到这一点:

1) 调用pcntl_fork在 PHP 中并检查父进程中的超时。如果超过使用 linux kill 命令将其杀死。

2) 在您将使用 shell_exec 调用的 bash 脚本中包含超时,请参见以下示例: http://www.bashcookbook.com/bashinfo/source/bash-4.0/examples/scripts/timeout3

3) 使用proc_open/proc_terminate功能

就我个人而言,我会选择 3 号,它是最干净的。如果您需要又快又脏,请使用数字 2。

关于php - 通过 shell_exec 设置 java 代码执行的时间限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22095726/

相关文章:

在 ptraced Linux 进程中调用 ptrace

linux - 如何使用 xargs 删除 iptables 规则?

shell - 如何像 log4j 那样将输出通过管道传输到 shell 中的旋转日志文件?

php - 如何将数组插入MYSQL数据库?

javascript - 统计 HTML 表中唯一值的实例

linux - 将 grep 结果保存到远程机器上的文件中

c++ - 从c/cpp程序中的进程ID获取进程名称(我不能使用/proc/<pid>/cmdline)

linux - '声明-A x' 与 'declare -A x=()'

php - 在 Woocommerce 中移动设备上的图片库上方移动标题和评级

php - Wordpress 语法错误,意外 [