o k` @sBddlZddlZddlZddlZddlZ  dddZddZdS) N /dev/nullc srtjtjrrtd!}zt|}Wnty,t dYnwWdn1s7wYzt |d|sNtj tj d}t d||fWnt yq}z |jtjkrgWYd}~nd}~wwztdWdn1swYWn!ty}zddlm} t d| |WYd}~nd}~wwt}|dkrt dtd t|tt}|dkrt dtjtjfD]} | qt|tj}t|tjtjB}t|tjtjB}t|tjt|tjt|tj|||fD]} t | qrdt!j"t!j#fD] } t!!| t$q-fd d } t%&| td }|'d t(WddS1s]wYdSdS)zFork a daemon process.rbz2Invalid pid in file %s Please remove it to proceedNrz!%s is already running with pid %sza+)exception_to_unicodezError writing to pid file: %s/cstjr tdSdS)N)ospathexistsremovepidfiler 2/usr/lib/python3/dist-packages/trac/util/daemon.pyremove_pidfileWs z!daemonize..remove_pidfilewbs%d))rrabspathr openintread ValueErrorsysexitkillbasenameargvOSErrorerrnoESRCHIOErrortrac.util.textrforkchdirumasksetsidstdoutstderrflushO_RDONLYO_RDWRO_APPENDdup2stdinfilenoclosesignalSIGTERMSIGHUP handle_signalatexitregisterwritegetpid)r prognamer+r$r%r"fileobjpiderstreamfdsignumrr r r daemonizes|                  $r=cCs tdS)z.Handle signals sent to the daemonized process.N)rr)r<framer r rr1_s r1)NNrrrr)r2rrr.rr=r1r r r rs  J