CGI рендерит для вывода на экран сценария оболочки

Я создал CGI в C ++. Эта программа вызывает скрипт оболочки script.sh сюда

system("script.sh")

Я не знаю почему, но когда я использую CGI, веб-страница отображает весь вывод скрипта.
Что я могу сделать, чтобы избежать этого? Я вставил echo off но это не работает, и я все еще вижу все результаты. Есть ли способ отключить это? Я использую LINUX Red Hat 6.2 и использую Mongoose в качестве веб-сервера.

0

Решение

Как правило, хорошо использовать что-то вроде 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");
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]