1

こんにちは、ac コンパイラを起動して実行すると出力が表示されますが、問題はエラーが表示されないことです....

      shell_exec("gcc xyz.c -o ab.out ");

      $output=exec("./ab.out");
      echo $output;

したがって、出力は表示されますが、コンパイル中にエラーは発生しません。どんな助けでも正当に評価されます。前もって感謝します。

4

1 に答える 1

1

実行したコマンドからのエラー出力はすべて STDERR に送られ、exec、shell_exec 関数はそれを提供しません。1つの方法は、それをリダイレクトすることです

exec("gcc test.c 2>&1", $out);

最もクリーンな方法は、proc_open関数を使用することです。

$descriptorspec = array(
   1 => array("pipe", "w"),  // stdout
   2 => array("pipe", "w") // stderr 
);

$process = proc_open('gcc test.c', $descriptorspec, $pipes);

if (is_resource($process)) {
    $stderr = stream_get_contents($pipes[2]);
    $stdout = stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    fclose($pipes[2]);
    $return_value = proc_close($process);
}
于 2013-01-12T15:06:39.417 に答える