-PR-
解決済み

CGIがKILLされたら、Cで動的に確保したメモリは?

  • 暇なときにでも
  • 質問No.99966
  • 閲覧数184
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (1/1)

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

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

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

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

どうぞよろしくお願い致します。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル5

ベストアンサー率 100% (3/3)

 UN*X系のOS(Linuxもそう)で、webサーバがApacheであれば、ブラウザ側で中断されると、CGIで起こされたプロセスにはSIGTERMが送られます。SIGTERMを受け取ったプロセスのデフォルトの処理は「強制終了」で、使っていたリソース(メモリとか、ファイルハンドルとか)は、OSによってシステムに回収され、後始末されます。

 もちろん、SIGTERMを受けるシグナルハンドラを定義して、自前で終了処理を行ってもかまいません。
お礼コメント
kitcat

お礼率 100% (1/1)

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

ありがとうございました。
投稿日時 - 2001-07-06 12:42:11
-PR-
-PR-
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ