2

C言語で作成したプログラムをproc_openで実行しています。

「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 を実行すると、ハードディスクがいっぱいになります。そのため、ファイルを削除してコンピューターを再起動する必要があります。私の質問は、このようなものをどのように処理するのですか?

ありがとう :)

4

1 に答える 1

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
}

後で手に残っているハンドルをきれいにすることを忘れないでください。

于 2012-03-19T08:57:34.453 に答える