Вы получаете только код возврата программы, который обычно является целым числом, где 0
означает «успех», а все остальное - код ошибки.
Если вы хотите перехватить фактический вывод программы (т. Е. STDOUT и / или STDERR ), вам необходимо выполнить одно из следующих действий:
- Использование буферизации вывода для захвата вывода
system()
:
$command = "c:\\Dev-Cpp\\bin\\g++.exe c:\\wamp\\www\\hello.cpp -O3 -o c:\\wamp\\www\\hello.exe";
ob_start();
system($command, $returnCode);
$output = ob_get_clean();
exec($command, $output, $returnCode);
// ...or...
$output = shell_exec($command);
// ...or...
$output = `$command`;
Если вы хотите перехватить вывод STDERR (что, я подозреваю, вы делаете), вам может потребоваться добавить 2>&1
в конец вашей командной строки.
В качестве альтернативы вы можете посмотреть на proc_open()
, который является более сложным, но может дать вам более точный контроль над дочерним процессом и тем, как он выполняет / передает данные обратно вам.