我使用proc_open来执行由c语言创建的程序。
我正在使用“stdout”文件。
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("file", "/tmp/example.output"),
2 => array("file", "/tmp/example.error", "a")
);
当我执行好的程序时,一切都很好但是当我执行无限循环程序时出现问题,如下面的代码:
#include "stdio.h"
int main(){
while(1){
printf("Example");
}
return 0
}
文件example.output将使我的硬盘已满。所以我需要删除该文件并重新启动我的电脑。我的问题是如何处理这样的事情?
谢谢:)
答案 0 :(得分:0)
你唯一可以做的就是使用proc_terminate
在没有偏见的情况下屠杀违规过程(但你可以礼貌并允许它先运行一段时间,实际上要给它完成一个时间限制)。
例如:
$proc = proc_open(...);
sleep(20); // give the process some time to run
$status = proc_get_status($proc); // see what it's doing
if($status['running']) {
proc_terminate($proc); // kill it forcefully
}
不要忘记清理手中仍有的手柄。