作者oso123 (随便聊聊(male) ~~~)
看板Web_Design
标题[问题] CGI外部呼叫Daemon造成网页不停的等待
时间Tue Jun 16 09:39:18 2015
我的cgi程式是用C写的, Server是thttpd
想请教一下 现在我想在cgi程式中 呼叫一个外部程式(用system, execl等等)去呼叫
这个外部程式(假设名子为while_loop)的内容 是作while loop, 除非等到被kill才会停止
现在遇到的问题是 用了system去呼叫了外部程式 并在後面加入"&" 让它背景执行
但是网页呈现的 是不停的等待 这样是出了甚麽问题吗?
除非等到我手动去kill掉 while_loop 这个process, 网页才秀出CGI的标准输出
还是cgi中不允许呼叫背景执行的第三方程式?
过程中查了很多 父行程, 子行程 的东西 以及 关掉stdou都试过
请问还有没有其他方法呢??
下面附上我最後试的程式码
还请有遇过此问题的高手 帮忙解答 谢谢!
pid_t child;
child = fork();
if(child != 0)
{
printf("Content-type:text/html\n\n");
printf("RESPONSE_SUCCESS");
fflush(stdout);
setvbuf(stdout, NULL, _IONBF, 0);
exit(0);
}
else
{
execl("/bin/sh", "sh", "-c", "/mnt/mtd/while_loop&",
(char*)0);
fflush(stdout);
setvbuf(stdout, NULL, _IONBF, 0);
}
我最後是希望 网页端能秀出 "RESPONSE_SUCCESS" 同时 背景能执行 "while_loop"
感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.235.222.69
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1434418763.A.904.html
※ 编辑: oso123 (111.235.222.69), 06/16/2015 10:34:53
1F:推 eight0: google "daemon fork 两次" 看有没有帮助 06/17 01:44