Mac Developer Library Developer


This manual page is part of Xcode Tools version 5.0

To obtain these tools:

If you are running a version of Xcode Tools other than 5.0, view the documentation locally:

  • In Xcode

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

  • To learn how the manual is organized or to learn about command syntax, read the manual page for manpages(5).

  • For more information about this technology, look for other documentation in the Apple Developer Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.

DAEMON(3)                BSD Library Functions Manual                DAEMON(3)

     daemon -- run in the background

     Standard C Library (libc, -lc)

     #include <stdlib.h>

     daemon(int nochdir, int noclose);

     The 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 launchd(8).

     Unless the argument nochdir is non-zero, daemon() changes the current working directory to the root

     Unless the argument noclose is non-zero, daemon() will redirect standard input, standard output, and
     standard error to /dev/null.

     The daemon() function returns the value 0 if successful; otherwise the value -1 is returned and the
     global variable errno is set to indicate the error.

     The daemon() function may fail and set errno for any of the errors specified for the library functions
     fork(2) and setsid(2).

     fork(2), setsid(2), sigaction(2)

     The daemon() function first appeared in 4.4BSD.

     Unless the noclose argument is non-zero, daemon() will close the first three file descriptors and redi-rect redirect
     rect them to /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
     daemon() should therefore either call daemon() before opening any files or sockets, or verify that any
     file descriptors obtained have values greater than 2.

     The daemon() function temporarily ignores SIGHUP while calling setsid(2) to prevent a parent session
     group leader's calls to fork(2) and then _exit(2) from prematurely terminating the child process.

BSD                              June 9, 1993                              BSD

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation with the feedback links below.
Bug reports
Report bugs in the functionality of the described tool or API through Bug Reporter.
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.