CGIのプログラムの途中でHTMLを返すことはできないのでしょうか?
すずちゅー
[E-Mail]
1998/04/30(木) 19:33:39
CGI(UNIX,C言語)で、HTMLで「処理を受け付けました」
と表示するだけで、</HTML>の後にその処理をしてい
ると、「Internal Server Error」(タイムアウト?)というエ
ラーになってしまいます。
どうやらプログラムが終了するまで、クライアントにHTMLを返さないようなのですが、プログラムの途中で
HTMLを返すことはできないのでしょうか?
B-Cus
1998/04/30(木) 21:53:58
int main(){
printf("Content-type: text/html\n\n");
printf("<html><body>test ok.</body></html>\n");
fclose(stdout);
sleep(100);
}
とすると100秒待たされませんでした。あるいはforkして親プロセスは
すぐに終了し、子プロセスに後始末をお願いするとか。
飯塚
1998/04/30(木) 22:15:58
int main(){
printf("Content-type: text/html\n\n");
printf("<html><body>test ok.</body></html>\n");
fflush(stdout);
sleep(100);
fclose(stdout);
}
というのはどう?
B-Cus
1998/04/30(木) 22:50:13
> というのはどう?
これだとうちの環境(apache+{Linux,Solaris})では100秒待たされました。
とほほ
1998/05/03(日) 00:27:25
画面への表示は fflush() でも行われることがありますが、文書の
終了は close() で判断されるようですね。で、終了前に、一定時間
以上書き込みが無いと、タイムアウトとなるようです。
すずちゅー
[E-Mail]
1998/05/06(水) 10:52:03
[[解決]]
B-Cusさん、飯塚さん、とほほさん、
貴重なご意見ありがとうございました。
私の問題は、
「fclose(stdout); 」
を入れることで解決いたしました。
これからも、よろしくお願いします。