傘地蔵さん、
「text/html なのに </html> が来ないとプロセスの終了待ちが遅れること」はありません。
HTTPサーバは CGI が出すヘッダは見ますが、コンテンツそのものには関与しないはずだからです。
トレースログ(trace.log)を見て、サーバとクライアントのやりとりを確認してみるのがよいと思います。
不明瞭なメッセージで済みませんでした。
表示が済んでいるのに遅いというのは、表示が済んでいるのにサーバが接続
待ちにならず、次の要求を受け付けないので遅くなるということです。一つ次の
要求が遅くなります。
昨日の調べで二つの問題が見つかり、現在はほとんど問題は無くなったように
思います。同じ間違いをする方も居ないでしょうが、参考までに書いておきます。
● C++ の STL にある vector で、要素数を確認せずに back() を使っていた。
当然ですがアクセス例外が発生するはずです。でもチェックボックスの内容に
よって変化するので気が付くのが遅れた。
チェックボックスは、チェックされていないと何も出力されないのですね。
● Content-Type の内容を間違えていた。
HTML なのに text/plane と書いたり、プレーンテキストなのに text/html
と書いていた。
text/html なのに </html> が来ないとプロセスの終了待ちが遅れることって
ないですか。
追伸
間違いがあってもクライアントが補ってくれるので、間違いに気が付き難い
です。
傘地蔵さん、
少し話が錯綜しているように思えます。
「クライアント側で表示が(すべて)終わっている」のなら、その接続は「起動待ち」や「終了待ち」であるはずがないからです。
また、「表示が終わっている」のなら「遅い」というのも考えにくいですね。「表示が終わっているのに接続中のまま」という意味でしょうか?
「表示が終わっていて何が遅いのか」を説明してもらった方がよさそうです。
また、アクセスが複数あるとわかりにくくなるので、AN HTTPD が動いている PC をネットワークから切り離してから、その PC上で、http://127.0.0.1/ またはその PC のIPアドレスを指定してその CGI を動かした場合にどうなるのかもあわせてお知らせ下さい。
中田さん始め皆さんのサポートのお陰で順調に動作を始め、一部の方に試用を
始めていただきました。
試用を始めていただいた方から早速レスポンスが遅いのではないかと注文を
付けられました。
実際にアクセスしているところを見ていると、クライアント側では表示が終わって
いるのに、サーバのタイトル部に表示されるステータスが接続待ちに戻りません。
起動待ちや終了待ちが 10 秒以上も続きます。
Perl のときには標準入出力をバッファしないようにといった注意が有ったと
思いますが、 C++ で書いているときにも CGI の終了を知らせるといった決まり
事が有るのでしょうか。
CGI は C++ で書いていて、それ自体を DOS 窓で起動させると一瞬で終わって
しまいます。その殆どは HTML 文を標準出力に書き出すだけです。