* setup (pre-exec) fd0: null,
* fd[12]: fd2-from-outer
* env fds: listener, call(server-end)(fake)
- * env fds: orig-fd[01]
* close fd: lockfile
+ * possibly clean env, argv
*
* setup (script) runs initialisation parts of the script
* at prefork establishment point:
*
# server (pm) [1] [fd0: null],
* [fd[12]: fd2-from-outer]
- * right away, forks one fa-monitor
+ * right away, forks init monitor
* [2] closes outer caller fds and call(fake)
* [server (pm)] fd[012]: null
* other fds: listener, syslog
* runs in loop accepting and forking,
- * reaping and limiting children (incl fa-monitor)
+ * reaping and limiting children (incl init monitor)
* reports failures of monitors to syslog
*
- * f-a monitor forks executor
- * closes fd: listener
- * [fd[12]: fd2-from-outer]
- * [other fds: call(server-end)(fake), syslog]
- * runs as monitor, below
- *
- *
* [client (C wrapper)] if client connect succeeds:
* now fd: call(client-end)
* sends message with: cmdline, env
* sends fds
*
- * [server (script)] accepts, forks monitor
+ * [server (script)] accepts, forks subseq monitor
*
- * monitor [1] [fd[012]: null]
- * other fds: syslog, call(server-end)
+ * monitor [1] [fd0: null]
+ * (init [fd[12]: init: fd2-from-outer; subseq: null]
+ * or errors: init: fd2; subseq: syslog
+ * subseq) other fds: syslog, call(server-end)
* sends ack byte
* receives args, env, fds
* forks executor
* exits normally
*
* [monitor] [fd[012]: null]
- * [other fds: call(server-end), syslog]
+ * [fd[12]: init: fd2-from-outer; subseq: null]
+ * [errors: init: fd2; subseq: syslog]
* reaps executor
* reports status via socket
*