X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/5b2abdfbf4211b6592cdd02b9507555a0ecbb04b..7ba935f9833da45a0dbcb06329e3015acee97223:/gen/daemon.3?ds=sidebyside diff --git a/gen/daemon.3 b/gen/daemon.3 index 0a95ff8..cd4931f 100644 --- a/gen/daemon.3 +++ b/gen/daemon.3 @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)daemon.3 8.1 (Berkeley) 6/9/93 -.\" $FreeBSD: src/lib/libc/gen/daemon.3,v 1.10 2001/10/01 16:08:50 ru Exp $ +.\" $FreeBSD: src/lib/libc/gen/daemon.3,v 1.14 2003/11/10 22:04:51 ghelmer Exp $ .\" .Dd June 9, 1993 .Dt DAEMON 3 @@ -49,33 +49,70 @@ The .Fn daemon function is for programs wishing to detach themselves from the controlling terminal and run in the background as system daemons. +On Mac OS X, the use of this API is discouraged in favor of using +.Xr launchd 8 . .Pp Unless the argument .Fa nochdir is non-zero, .Fn daemon -changes the current working directory to the root (``/''). +changes the current working directory to the root +.Pq Pa / . .Pp Unless the argument .Fa noclose is non-zero, .Fn daemon -will redirect standard input, standard output and standard error -to ``/dev/null''. +will redirect standard input, standard output, and standard error to +.Pa /dev/null . +.Sh RETURN VALUES +.Rv -std daemon .Sh ERRORS -If an error occurs, +The .Fn daemon -returns -1 and sets the global variable +function may fail and set .Va errno -to any of the errors specified for the library functions +for any of the errors specified for the library functions .Xr fork 2 and .Xr setsid 2 . .Sh SEE ALSO .Xr fork 2 , -.Xr setsid 2 +.Xr setsid 2 , +.Xr sigaction 2 .Sh HISTORY The .Fn daemon function first appeared in .Bx 4.4 . +.Sh CAVEATS +Unless the +.Fa noclose +argument is non-zero, +.Fn daemon +will close the first three file descriptors and redirect them to +.Pa /dev/null . +Normally, these correspond to standard input, standard output, and +standard error. +However, if any of those file descriptors refer to something else, they +will still be closed, resulting in incorrect behavior of the calling program. +This can happen if any of standard input, standard output, or standard +error have been closed before the program was run. +Programs using +.Fn daemon +should therefore either call +.Fn daemon +before opening any files or sockets, or verify that any file +descriptors obtained have values greater than 2. +.Pp +The +.Fn daemon +function temporarily ignores +.Dv SIGHUP +while calling +.Xr setsid 2 +to prevent a parent session group leader's calls to +.Xr fork 2 +and then +.Xr _exit 2 +from prematurely terminating the child process.