アプリ版:「スタンプのみでお礼する」機能のリリースについて

CGIからある処理プロセスを実行させているのですが、このプロセスを長時間実行させたままにしておくと停止してしまいます。
(このプロセスはあるファイルの状態を監視しているので、停止の指示をしない限りずっと動かしっぱなしにしておきたいのですが・・・)
このプロセス自体がおかしな動きをしているようには見えないのですが、何が原因で停止してしまうのか、またどうすれば停止しないようになるのか教えていただけないでしょうか?

OSはRedHat Linux 5.1です。

A 回答 (2件)

停止でも終了でもどこかからsignalが来たためだと思うので、


C言語ならmainの頭で
signal(SIGHUP, SIG_IGN);
signal(SIGKILL,SIG_IGN);
こんなふうに無効にしておけばだいじょぶでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

上記回答のようにすればプログラム内でsignalを無視できるということはわかったのですが、そもそもsignalはなぜ送信されるのでしょうか?
signalを送信されないよいうにすることはできないのでしょうか?
プロセスのCPU使用時間の上限やメモリの使用量の上限等はcshのlimit
コマンドで調べたところ制限はかかっていませんでした。
Linux初心者でこのあたりの処理や制限についての知識がないので
ご教授願えないでしょうか。

お礼日時:2008/12/21 22:44

例えばApacheではRLimitCPUでCGIで起動されたプロセスの時間を制限します


無限ループしてしまったCGIや意図的な負荷をかけるCGIからサーバーを守るためです
    • good
    • 0
この回答へのお礼

回答ありがとうございます

httpd.confを確認してみましたがRLimitCPU等の制限の記述は定義していませんでした。
またulimitコマンドで確認したところCPU時間等の制限はかけていませんでした。
ひとつ気になるのがプロセスが停止してしまった時にhttpdのログにSIGHUPの受信があったのですがこれは関係あるのでしょうか?

質問ばかりで申し訳ありませんがご教授願います。

お礼日時:2008/12/29 09:44

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