C言語でCGIを製作していています。(環境:Linux + APACHE + gcc)

malloc()などで動的に確保したメモリ内容を標準出力に表示している時に
出力先(閲覧者ですね)側から受信停止されたら、その後の処理はどうな
るのでしょうか?
その時の例外処理は、コンソールでのターミネイト処理と同じでいいので
しょうか。

試しにAPACHEのログを見てみますと、出力は最後まで行われていないよ
うです。本来そのCGIは120Kbyteの転送量が書き出されますが、受信停止
と思われる30kbyte程度で収まっています。

OS側でうまくやってくれれば、それにこしたことが無いのですが。

どうぞよろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

 UN*X系のOS(Linuxもそう)で、webサーバがApacheであれば、ブラウザ側で中断されると、CGIで起こされたプロセスにはSIGTERMが送られます。

SIGTERMを受け取ったプロセスのデフォルトの処理は「強制終了」で、使っていたリソース(メモリとか、ファイルハンドルとか)は、OSによってシステムに回収され、後始末されます。

 もちろん、SIGTERMを受けるシグナルハンドラを定義して、自前で終了処理を行ってもかまいません。
    • good
    • 0
この回答へのお礼

CGIの場合もFree()しなくても、大抵はOS側でやってくれるのですね。

ありがとうございました。

お礼日時:2001/07/06 12:42

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング