# The signal handler -[task_result] Child process in wheel 8 wrote to STDOUT: HASH(0x9b22c94 +) [task_result] Result for cmd: 32240\Kb (1.5%). [irc_bot_msg] I said '[task_result] Result for cmd: 32240\Kb (1.5%).' +to swares [task_close] Child 30750 has finished. [on_child] We have lost our children! (POE::Session=ARRAY(0x8fcf1a0)) [on_child] We have lost our children! (POE::Session=ARRAY(0x9adc6d0)) [on_child] We have lost our children! (POE::Session=ARRAY(0x9ad16c4)) [on_child] We have lost our children! (POE::Session=ARRAY(0x9b231f8)) [on_child] We have lost our children! (POE::Session=ARRAY(0x9b23a50)) [on_child] We have lost our children! (POE::Session=ARRAY(0x9ad8d1c)) [on_child] We have lost our children! (POE::Session=ARRAY(0x9adb2e8)) [bot_stop] Stopping. Can't call method "PID" on an undefined value at ./cookbot.pl line 169 +4.
Where I call the code -# handler for child processes (forking job server) $kernel->sig( CHLD => "task_close" );
Here's the task_close event handler -my $task = POE::Wheel::Run->new( Program => sub { &{$this_code} }, ProgramArgs => \@program_args, StdoutFilter => POE::Filter::Reference->new(), StdinEvent => 'task_stdin', # Flushed all data to the child's +STDIN. StdoutEvent => 'task_result', # Received data from the child's +STDOUT. StderrEvent => 'task_debug', # Received data from the child's S +TDERR. # ErrorEvent => 'task_error', # An I/O error occurred. CloseEvent => 'task_close', # Child closed all output handle +s. ); $heap->{task}->{ $task->ID } = $task;
# Child close event sub task_close { my ($heap, $wheel_id) = @_[HEAP, ARG0]; my $result = $_[ARG0]; my $child = $heap->{task}->{$wheel_id}; print "[task_close] Child ", $child->PID, " has finished.\n"; $child = delete $heap->{task}->{$wheel_id}; }
In reply to POE::Wheel::Run task_close handler problems. by swares
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |