我有.exe
个文件。我想运行它并在一段时间后(假设在1.5秒之后)通过终止.exe
并报告time limit exceed
。我花了两天时间才发现这一点,但没有成功。
P.S。我无法使用pthread
扩展名。我在安装它时遇到了麻烦。 :(
编辑:我现在的问题是当proc_terminate()
$process
php脚本停止等待run.exe
,但run.exe
仍在运行时(我可以在任务管理器中看到它。我的PHP脚本:
<pre>
<?php
$descriptorspec = array(
1 => array('pipe', 'w')
);
$process = proc_open("C:/wamp/www/yet-another-online-judge/run.exe", $descriptorspec, $pipes);
if (is_resource($process)) {
usleep(2.5*1000000); // wait 2.5 secs
$status = proc_get_status($process);
if ($status['running'] == true) {
proc_terminate($process);
echo "VERDICT : TLE\n";
} else {
echo "EXIT CODE : {$status['exitcode']}\n";
echo "OUTPUT :\n";
while (!feof($pipes[1]))
echo fgets($pipes[1]);
fclose($pipes[1]);
proc_close($process);
}
}
?>
</pre>
run.cpp:
#include <iostream>
using namespace std;
int main() {
cout << "1+1=3";
while (1);
return 0;
}
如果您不理解C ++:run.exe将1+1=3
输出到stdout,然后进入infinte循环。
那么有没有办法实际终止run.exe ??