* cache pid of child process
- resolves a bug showing up intermittently in the test cases
- happens immediately after daemon started
- check_running returns false if run before daemon has written pidfile
- solution
- cache pid file in parent on fork()
- if pid cached, check cached pid first
- if cached pid is good and pidfile matches cached pid, empty cache
- if cached pid is bad, empty cache
* check out Proc::PID::File::Fcntl
- use for writing pid files
* manager method to get child status hash
- for each selected daemons
- is daemon running
- is daemon enabled
- pid
- process stats, e.g. cpu time & memory ?
* receive data from child processes
- still under consideration
- option for manager to open a named pipe
- manager.cmd
- non-blocking reads
- child processes can write YAML/json data to manager
- not written to filesystem
- lock file?
- only one managing process can read data from the pipe at a time
- not reliable since there's no 'ack' for messages transmitted
- could be lost
- might get delivered to wrong manager process
* add method: signal( $num )
- does: kill -$num $launcher->pid
- if $launcher->pid
- stop() and force_stop() use this
- hash signal names to numbers? methods?
- $launcher->signal( 'HUP' )
- $launcher->HUP
* make the supervisor less special
- supervisor is just another ordinary daemon
- shortcut to create the supervisor
- ensure supervisor is started last
- actions to operate only on supervisor
- supervisor waits a bit before calling start() the first time