Re: POE::Wheel::Run and sig_child

Mike Schilli <[email protected]> Thu, 22 Apr 2010 21:33:20 -0700 (PDT)
Newsgroups gmane.comp.lang.perl.poe
Message-ID <alpine.LRH.1.00.1004222130320.19219@pyramidlake.greatamerica.corp.yahoo.com>
Couple of more issues resolved, this time regarding daemonization of POE
processes, see below. Thanks!

-- Mike

Mike Schilli
[email protected]

---------- Forwarded message ----------
From: "[email protected]" <[email protected]>
To: Mike Schilli <[email protected]>
Subject: Re: POE::Wheel::Run and sig_child
Date: Thu, 22 Apr 2010 21:23:09 -0700

Hmm, I didn't realize it was myself who replied to that thread ;)

If I remember correctly it's because POE caches the signal handlers on
startup ( not POE::Kernel->run() time BUT during the use/compile time )
and if you fork afterwards, it gets confused... That's why you generally
need to call the POE::Kernel->has_forked() sub after you fork so it can
futz with the internals -
http://search.cpan.org/~rcaputo/POE-1.289/lib/POE/Kernel.pm#has_forked

P.S. Could you please post this to the mailinglist too? That way, future
POE users could find the answer in the archives :)

~Apocalypse

Mike Schilli wrote:
> On Thu, 22 Apr 2010, [email protected] wrote:
>
>> Oh, you could grep the mailinglist for daemonization issues - there
>> were a few posts about that some weeks ago... The advice in there
>> probably would apply to you :)
>
> OMG, you did it again, jackpot! I added the BEGIN block and all of
> a sudden the daemon works just fine.
>
> I guess you referred to this post:
>
>     http://www.mail-archive.com/[email protected]/msg04514.html
>
> However, I couldn't find an explanation on why this is required ... do
> you have a pointer ready by any chance?
>
> Thanks again!
>
> -- Mike
>
> Mike Schilli
> [email protected]
>
>>
>> In a nutshell: Don't load POE until you've daemonized... sample code:
>>
>> BEGIN {
>>    use Net::Server::Daemonize;    # or any other daemonization module
>>    daemonize();
>> }
>> use POE;
>>
>> ~Apocalypse
>>
>> Mike Schilli wrote:
>>> On Wed, 21 Apr 2010, [email protected] wrote:
>>>
>>>>    Ah, Let me fix a few bugs/typos in your code then it'll work as
>>>>    intended!
>>>
>>> Wow, thanks a lot for that, it was really helpful -- let me work
>>> that in
>>> and come back with more questions :) I have a weird case where after
>>> a daemon forks and then starts a POE kernel all of a sudden doesn't
>>> handle signals properly anymore, but I'll try to figure it out myself
>>> with the info you sent.
>>>
>>> Thanks again!
>>>
>>> -- Mike
>>>
>>> Mike Schilli
>>> [email protected]
>>