                                      NAME

   duende - run a child process as a daemon

                                  DESCRIPTION

   duende makes a given child process a daemon. The standard output and
   standard error of the child process is logged via syslog() with a priority
   of LOG_INFO.

                                     USAGE

   duende child_process [ all subsequent arguments passed on to child ]

                                    DETAILS

   When duende is invoked, it spawns two processes. In addition to spawning
   the daemonized child process, duende also spawns a process which reads and
   logs the standard output of the daemonized process. The parent process
   stays alive so as to monitor the daemonized process.

   duende requires a blank directory named /opt/local/etc/maradns/logger to run.

   Should the parent duende process HUP signal, duende will restart the child
   process. Should the daemonized or logging process received an untrapped
   HUP signal or exit with an exit code of 8, duende will restart the
   process. Should the daemonized or logging process exit for any other
   reason, duende will send the logger process a TERM signal and exit. Should
   the duende parent process receive a TERM or INT signal, duende sends all
   of its children TERM signals, then exits.

   The duende process must be started as the superuser; this is because
   Duende's intended child processes (maradns and zoneserver) need to bind to
   privileged ports, and because duende uses a setuid() call to change the
   user ID of the logging process to the user with ID 66.

                                    EXAMPLES

   Using duende to start maradns, where the mararc file is /opt/local/etc/mararc.2

 duende maradns -f /opt/local/etc/mararc.3

   Using duende to start zoneserver, where the mararc file is /opt/local/etc/mararc.4

 duende zoneserver -f /opt/local/etc/mararc.4

                                      BUGS

   Duende assumes that all of its children are well-behaved, eating their
   vegetables, going to bed when told, and terminating when receiving a TERM
   signal.

                                    SEE ALSO

   maradns(8)
   http://www.maradns.org

                                LEGAL DISCLAIMER

   THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS OR
   IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
   NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   SUCH DAMAGE.

                                     AUTHOR

   Duende and this man page are written by Sam Trenholme. D Richard Felker
   III provided some invaluable assistance with the piping code which duende
   uses.
