NAME
Sympa::Process - Process of Sympa
SYNOPSIS
use Sympa::Process;
my $process = Sympa::Process->instance;
$process->init(pidname => 'sympa');
$process->daemonize;
$process->fork;
DESCRIPTION
Sympa::Process implements the class to handle process itself of Sympa software.
Signal handling
Once Sympa::Process is loaded,
SIGCHLD
signals are captured,
and only defunct child processes invoked by fork() method are reaped.
Methods
-
instance ( )
Constructor. Creates a singleton instance of Sympa::Process object.
Returns:
A new Sympa::Process instance, or undef for failure.
-
init ( key => value, … )
Instance method. TBD.
-
daemonize ( )
Instance method. Daemonizes process itself. Process is given new process group, detached from TTY and given new process ID.
Parameters:
None.
Returns:
None.
-
fork ( [ $tag ] )
Instance method. Forks process. Note that this method should be used instead of fork() in Perl core.
Parameter:
-
$tag
A string to determine new child process. By default the name of calling process.
Returns:
See “fork” in perlfunc.
-
-
reap_child ( [ blocking => 1 ] )
DEPRECATED.
-
wait_child ( )
Instance method. Waits for any child process.
Parameters:
None.
Returns:
0
. Returns-1
on failure. -
sync_child ( [ hash => \%hash ], [ file => 1 ] )
Updates process information in external data.
Parameters:
-
hash => \%hash
Syncs PIDs in local map %hash
-
file => 1
Syncs child PIDs in PID file. If dead PID is found, notification will be sent to super-listmaster.
Returns:
None.
-
-
remove_pid ([ pid => $pid ], [ final => 1 ] )
Instance method. Removes process ID from PID file. Then if the file is empty, it will be removed.
-
write_pid ( [ initial => 1 ], [ pid => $pid ] )
Instance method. Writes or adds process ID to PID file.
Parameters:
-
initial => 1
Initializes PID file. If the file remains, notification will be sent to super-listmaster.
-
pid => $pid
Process ID to be written. By default PID of current process.
-
-
direct_stderr_to_file ( )
Instance method. TBD.
Attributes
Sympa::Process instance may have following attributes:
-
{children}
Hashref with child PIDs forked by fork() method as keys.
-
{detached}
True value is set if daemonize() method was called and the process has been detached from TTY.
-
{generation}
Generation of process. If fork() method succeeds, it will be increased by child process.
Utility functions
-
eval_in_time ( $subref, $timeout )
Evaluate subroutine $subref in $timeout seconds.
TBD.
-
register_handler ( )
Registers
SIGCHLD
handler. This function is usually called automatically during initialization.
HISTORY
Sympa::Tools::Daemon appeared on Sympa 6.2a.41.
Renamed Sympa::Process appeared on Sympa 6.2.12 and began to provide OO interface.
Sympa 6.2.13 introduced daemonize() method and {detached} attribute.
As of Sympa 6.2.14, SIGCHLD
signal was captured and child processes
were reaped immediately. reap_child() method (formerly reaper()) was
deprecated.