私はDaemon::Simpleいくつかのスクリプトをすばやくデーモン化し、それらを起動/停止できるようにするために使用しています。ただし、これらのスクリプトの一部は python で記述されているため、通常は python スクリプトと呼びDaemon::Simple::Init()ますexec()。
Daemon::Simple::Init()しかし、 と が閉じSTDOUTていることがわかりました。その結果、とSTDERRへの書き込み時に Python スクリプトが壊れる (単に終了する) ようです。execの前にそれらを再度開いてファイルにリダイレクトしても役に立ちません。STDOUTSTDERRSTDOUTSTDERR
私が見つけたのは、次のソースを変更することですDaemon::Simple。
close(STDOUT);
close(STDERR);
に:
open STDOUT, "/dev/null"
open STDERR, "/dev/null"
以前のように呼び出した後、再度開いSTDOUTてSTDERR実際のファイルにリダイレクトするとDaemon::Simple:Init()、今回は機能します。閉じSTDOUTてSTDERR再度開くと何らかの形で投稿exec()が壊れているようですが、それらを開いて/dev/null再度開くと正常に機能します。
とにかく、どちらが生き残るかを変更せずにSTDOUT、再開または開いたままにすることができますか?STDERRDaemon::Simpleexec()