[問題] CGI外部呼叫Daemon造成網頁不停的等待

作者: oso123 (隨便聊聊(male) ~~~)   2015-06-16 09:39:18
我的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"
感謝!
作者: eight0 (欸XD)   2015-06-17 01:44:00
google "daemon fork 兩次" 看有沒有幫助

Links booklink

Contact Us: admin [ a t ] ucptt.com