]> git.saurik.com Git - apple/libc.git/blobdiff - gen/daemon.3
Libc-594.9.4.tar.gz
[apple/libc.git] / gen / daemon.3
index 0a95ff8d0f85792f56fa52424abadeb7d8cddc79..cd4931f24922a81112e51027a936febc48ff9480 100644 (file)
@@ -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.