- 締切済み
CGI経由で起動したプロセスが停止してしまう
CGIからある処理プロセスを実行させているのですが、このプロセスを長時間実行させたままにしておくと停止してしまいます。 (このプロセスはあるファイルの状態を監視しているので、停止の指示をしない限りずっと動かしっぱなしにしておきたいのですが・・・) このプロセス自体がおかしな動きをしているようには見えないのですが、何が原因で停止してしまうのか、またどうすれば停止しないようになるのか教えていただけないでしょうか? OSはRedHat Linux 5.1です。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
noname#208124
回答No.2
例えばApacheではRLimitCPUでCGIで起動されたプロセスの時間を制限します 無限ループしてしまったCGIや意図的な負荷をかけるCGIからサーバーを守るためです
- eroermine
- ベストアンサー率18% (83/444)
回答No.1
停止でも終了でもどこかからsignalが来たためだと思うので、 C言語ならmainの頭で signal(SIGHUP, SIG_IGN); signal(SIGKILL,SIG_IGN); こんなふうに無効にしておけばだいじょぶでしょう。
質問者
お礼
回答ありがとうございます。 上記回答のようにすればプログラム内でsignalを無視できるということはわかったのですが、そもそもsignalはなぜ送信されるのでしょうか? signalを送信されないよいうにすることはできないのでしょうか? プロセスのCPU使用時間の上限やメモリの使用量の上限等はcshのlimit コマンドで調べたところ制限はかかっていませんでした。 Linux初心者でこのあたりの処理や制限についての知識がないので ご教授願えないでしょうか。
お礼
回答ありがとうございます httpd.confを確認してみましたがRLimitCPU等の制限の記述は定義していませんでした。 またulimitコマンドで確認したところCPU時間等の制限はかけていませんでした。 ひとつ気になるのがプロセスが停止してしまった時にhttpdのログにSIGHUPの受信があったのですがこれは関係あるのでしょうか? 質問ばかりで申し訳ありませんがご教授願います。