0

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

system("script.sh")

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

4

1 回答 1

1

通常,最好使用类似system("script.sh >> log.txt 2>&1")捕获所有正常和错误输出并将其重定向到log.txt. 否则,此输出将定向到STDOUTand 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");
}
于 2013-10-31T17:51:25.177 回答