0

CGIページから生成され、単独で実行されるデーモンプロセスになるperlスクリプトがあります。使用しているモジュールから呼び出されたダイがある場合、スクリプトは eval ブロッ​​クで処理されていても呼び出されます。ただし、コマンド プロンプトからスクリプトを実行すると、すべて問題なくエラーが処理されます。

注:コマンドラインからも、スクリプトはデーモンになります

4

1 に答える 1

0

申し訳ありませんが、ここで本当の答えはありませんが、いくつか調べるべきことがあります...

mod_perl からジョブを生成する場合は、通常よりも複雑であることを思い出してください。ファイル記述子を閉じる必要があります。httpd/mod_perl は 0、1、および 2 以上のファイルを開いています。stdout最終的に、0 から 255 までを閉じたループを作成しました。また、メモリからは 1 ではないと思います。

しかし、なぜ eval が機能しないのかわかりません。を使用してスクリプトを生成していますexecか? その場合、シェルから実行するのと同じはずです。「殺された」と言うとき、ダイがスクリプトを終了させて​​いることを意味しますか(evalがなかったかのように)? または、他の何か。それ以外の場合は、mod_perl が実行されている httpd プロセスからシグナル ハンドラーを継承している可能性がありますか?

于 2011-12-10T03:24:28.560 に答える