Php 在联机c编译器中显示错误
嗨,我有一个c编译器,运行时显示输出,但问题是它没有显示错误Php 在联机c编译器中显示错误,php,c,compiler-errors,Php,C,Compiler Errors,嗨,我有一个c编译器,运行时显示输出,但问题是它没有显示错误 shell_exec("gcc xyz.c -o ab.out "); $output=exec("./ab.out"); echo $output; 因此,它显示输出,但不显示编译时发生的任何错误。 如有任何帮助,我们将不胜感激。 提前感谢。您运行的命令的任何错误输出都将转到STDERR,并且exec、shell_exec函数都不会为您提供此功能。一种方法是重定向它 exec("gcc tes
shell_exec("gcc xyz.c -o ab.out ");
$output=exec("./ab.out");
echo $output;
因此,它显示输出,但不显示编译时发生的任何错误。
如有任何帮助,我们将不胜感激。
提前感谢。您运行的命令的任何错误输出都将转到STDERR,并且exec、shell_exec函数都不会为您提供此功能。一种方法是重定向它
exec("gcc test.c 2>&1", $out);
最干净的方法是使用函数
$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);
}
您运行的命令的任何错误输出都将转到STDERR,并且exec、shell_exec函数都不会为您提供这一信息。一种方法是重定向它
exec("gcc test.c 2>&1", $out);
最干净的方法是使用函数
$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);
}
另外,
exec
的返回值只是命令结果的最后一行。而且,exec
的返回值只是命令结果的最后一行。它是否会重定向到.out文件?是的。如果你用那种方式<代码>执行(“gcc测试>out.log 2>&1”)。请参阅高级示例中的proc\u open
它是否会重定向到.out文件?是。如果你用那种方式<代码>执行(“gcc测试>out.log 2>&1”)。请参阅带有proc\u open