c++ - CGI 呈现屏幕 shell 脚本输出

标签 c++ linux cgi mongoose-web-server

我用 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。文本文件。否则,此输出将定向到 STDOUTSTDERR,而 STDOUT 是 CGI 到 HTTP 流的输出。

有了这个,它还可以改进您的脚本,使其具有启用或禁用此日志记录的输入,例如 CGI 参数中的 &logging=1 ,然后您将获得如下内容控制输出:

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

关于c++ - CGI 呈现屏幕 shell 脚本输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19713313/

相关文章:

c++ - 适用于 Mac 的 Visual C++ 2010 Express

linux - TMUX Pane 中的 vim 发生了什么?

c++ - 删除其范围之外的已分配(新)对象

c++ - 如何使用 reverse_iterator 插入

php - 如何为使用 cat/dev/null > 重置日志文件的 cronjob 编写 PHP 脚本

c++ - 我应该如何提取此 url 获取字符串

c++ - 内容处置文件名中的特殊字符

java - 从 Java 执行 hgweb.cgi

c++ - 运算符问题<

c - 为什么 EOF 在 fgets 和 read 中的行为不同