1.\" Copyright (c) 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 3. All advertising materials mentioning features or use of this software 13.\" must display the following acknowledgement: 14.\" This product includes software developed by the University of 15.\" California, Berkeley and its contributors. 16.\" 4. Neither the name of the University nor the names of its contributors 17.\" may be used to endorse or promote products derived from this software 18.\" without specific prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30.\" SUCH DAMAGE. 31.\" 32.\" @(#)daemon.3 8.1 (Berkeley) 6/9/93 33.\" $FreeBSD$ 34.\" 35.Dd June 9, 1993 36.Dt DAEMON 3 37.Os 38.Sh NAME 39.Nm daemon 40.Nd run in the background 41.Sh LIBRARY 42.Lb libc 43.Sh SYNOPSIS 44.In stdlib.h 45.Ft int 46.Fn daemon "int nochdir" "int noclose" 47.Sh DESCRIPTION 48The 49.Fn daemon 50function is for programs wishing to detach themselves from the 51controlling terminal and run in the background as system daemons. 52.Pp 53Unless the argument 54.Fa nochdir 55is non-zero, 56.Fn daemon 57changes the current working directory to the root 58.Pq Pa / . 59.Pp 60Unless the argument 61.Fa noclose 62is non-zero, 63.Fn daemon 64will redirect standard input, standard output, and standard error to 65.Pa /dev/null . 66.Sh RETURN VALUES 67.Rv -std daemon 68.Sh ERRORS 69The 70.Fn daemon 71function may fail and set 72.Va errno 73for any of the errors specified for the library functions 74.Xr fork 2 75and 76.Xr setsid 2 . 77.Sh SEE ALSO 78.Xr fork 2 , 79.Xr setsid 2 , 80.Xr sigaction 2 81.Sh HISTORY 82The 83.Fn daemon 84function first appeared in 85.Bx 4.4 . 86.Sh CAVEATS 87Unless the 88.Fa noclose 89argument is non-zero, 90.Fn daemon 91will close the first three file descriptors and redirect them to 92.Pa /dev/null . 93Normally, these correspond to standard input, standard output, and 94standard error. 95However, if any of those file descriptors refer to something else, they 96will still be closed, resulting in incorrect behavior of the calling program. 97This can happen if any of standard input, standard output, or standard 98error have been closed before the program was run. 99Programs using 100.Fn daemon 101should therefore either call 102.Fn daemon 103before opening any files or sockets, or verify that any file 104descriptors obtained have values greater than 2. 105.Pp 106The 107.Fn daemon 108function temporarily ignores 109.Dv SIGHUP 110while calling 111.Xr setsid 2 112to prevent a parent session group leader's calls to 113.Xr fork 2 114and then 115.Xr _exit 2 116from prematurely terminating the child process. 117