Я создал CGI в C ++. Эта программа вызывает скрипт оболочки script.sh
сюда
system("script.sh")
Я не знаю почему, но когда я использую CGI, веб-страница отображает весь вывод скрипта.
Что я могу сделать, чтобы избежать этого? Я вставил echo off
но это не работает, и я все еще вижу все результаты. Есть ли способ отключить это? Я использую LINUX Red Hat 6.2 и использую Mongoose
в качестве веб-сервера.
Как правило, хорошо использовать что-то вроде system("script.sh >> log.txt 2>&1")
захватить весь нормальный и вывод ошибок и перенаправить его в log.txt
, В противном случае этот вывод направлен на STDOUT
а также STDERR
, а также STDOUT
это вывод вашего CGI в поток HTTP.
Имея это, он может также улучшить ваш скрипт, чтобы иметь вход, который включает или отключает эту запись, что-то вроде &logging=1
среди параметров CGI, и тогда у вас будет что-то вроде следующего для управления выводом:
if (logging==1) {
system("script.sh >> log.txt 2>&1");
}
else {
system("script.sh >> /dev/null 2>&1");
}
Других решений пока нет …