CGI 渲染到屏幕外壳脚本输出

CGI renders to screen shell script output

本文关键字:外壳脚本 输出 屏幕 CGI      更新时间:2023-10-16

我在C++年创建了一个CGI。该程序以这种方式调用 shell 脚本script.sh

system("script.sh")

我不知道为什么,但是当我使用CGI时,网页会显示脚本的所有输出。我能做些什么来避免这种情况?我插入了一个echo off但它不起作用,我仍然看到所有输出。有没有办法禁用它?我正在使用 LINUX Red Hat 6.2 并使用 Mongoose 作为 Web 服务器。

通常,最好使用 system("script.sh >> log.txt 2>&1") 之类的东西来捕获所有正常和错误输出并将其重定向到 log.txt 中。 否则,此输出将定向到STDOUTSTDERRSTDOUT是CGI到HTTP流的输出。

有了这个,它还可以改进你的脚本,使输入启用或禁用此日志记录,类似于 CGI 参数中的&logging=1,然后你将有如下所示的东西来控制输出:

if (logging==1) {
  system("script.sh >> log.txt 2>&1");
}
else {
  system("script.sh >> /dev/null 2>&1");
}