を使用してプロセスを開き、proc_open()
しばらくusleep()
してからプロセスのステータスを確認します。プロセスがまだ実行されている場合は、それを実行proc_terminate()
します。
問題は、proc_terminate()
プロセスが終了するのを待たずにスクリプトを継続して使用する場合です (これは正常です)が、時間が経ってもプロセスは終了しません。
プロセスは、最初にstdoutに出力され、次に無限ループに入る.exe
ファイルです。hello
私のPHPスクリプト:
<pre>
<?php
$descriptorspec = array(
1 => array('pipe', 'w')
);
$process = proc_open("C:/wamp/www/my-project/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 "Terminated\n";
} else {
echo "Exited in time\n";
echo "EXIT CODE : {$status['exitcode']}\n";
echo "OUTPUT :\n";
while (!feof($pipes[1]))
echo fgets($pipes[1]);
fclose($pipes[1]);
proc_close($process);
}
}
?>
</pre>
この C++ ファイルをコンパイルすると、次のようになります.exe
。
#include <iostream>
using namespace std;
int main() {
cout << "hello";
while (1);
return 0;
}
なぜこれが起こるのか誰か知っていますか?:(