我有这样的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
Run Code Online (Sandbox Code Playgroud)
我希望页面显示在最后一个之后echo,而不是在脚本执行结束时.我已经尝试将代码放在另一个文件中并像这样执行它./background.sh &.它适用于控制台,但不适用于浏览器.
我用lighttpd
关闭标准输出与exec >&-您执行长时间运行或后台任务之前.也许你还必须关闭stderr.那就是
exec >&-
exec 2>&-
Run Code Online (Sandbox Code Playgroud)
(看来你不能在一行中关闭)
这将破坏管道并允许您的Web服务器将已输出的数据(例如via echo)发送到浏览器.