Run a cgi shell script in background

爱⌒轻易说出口 提交于 2019-12-30 05:14:08

问题


I've a cgi shell script like this

#!/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

I want to page to show after the last echo, not at the end of the execution of the script. I've tried putting the code in another file and execute it like this ./background.sh &. It works in console but not in the browser.

I use lighttpd


回答1:


Close stdout with exec >&- before you execute your long-running or background task. Maybe you'll also have to close stderr. That would be

exec >&-
exec 2>&-

(it seems you can't close both in one line)

This will break the pipe and allow your web server to send the data already outputted (such as via echo) to the browser.



来源:https://stackoverflow.com/questions/6033780/run-a-cgi-shell-script-in-background

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!