我有像这样的cgi shell脚本
#!/bin/sh
# show the page
echo Content-type: text/html
echo
echo "<html><b>Hello world!</b></html>"
# the task I want to do in background
sleep 100
echo $(date) >> log
我想要在最后echo
之后显示页面,而不是在脚本执行结束时显示。我已经尝试将代码放在另一个文件中并像./background.sh &
一样执行它。它适用于控制台,但不适用于浏览器。
我使用lighttpd
答案 0 :(得分:5)
exec >&-
Close stdout。也许你还必须关闭stderr。那将是
exec >&-
exec 2>&-
(似乎你不能在一行中关闭)
这将破坏管道并允许您的Web服务器将已输出的数据(例如通过echo
)发送到浏览器。