.\" Copyright (c) 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS 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.
.\" %%%LICENSE_END
.\"
.\"	@(#)daemon.3	8.1 (Berkeley) 6/9/93
.\" Added mentioning of glibc weirdness wrt unistd.h. 5/11/98, Al Viro
.TH DAEMON 3 2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
daemon \- run in the background
.SH SYNOPSIS
.nf
.B #include <unistd.h>
.PP
.BI "int daemon(int " nochdir ", int " noclose );
.fi
.PP
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.PP
.BR daemon ():
.nf
    Since glibc 2.21:
.\"             commit 266865c0e7b79d4196e2cc393693463f03c90bd8
        _DEFAULT_SOURCE
    In glibc 2.19 and 2.20:
        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
    Up to and including glibc 2.19:
        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
.fi
.SH DESCRIPTION
The
.BR daemon ()
function is for programs wishing to detach themselves from the
controlling terminal and run in the background as system daemons.
.PP
If
.I nochdir
is zero,
.BR daemon ()
changes the process's current working directory
to the root directory ("/");
otherwise, the current working directory is left unchanged.
.PP
If
.I noclose
is zero,
.BR daemon ()
redirects standard input, standard output, and standard error
to
.IR /dev/null ;
otherwise, no changes are made to these file descriptors.
.SH RETURN VALUE
(This function forks, and if the
.BR fork (2)
succeeds, the parent calls
.\" not .IR in order not to underline _
.BR _exit (2),
so that further errors are seen by the child only.)
On success
.BR daemon ()
returns zero.
If an error occurs,
.BR daemon ()
returns \-1 and sets
.I errno
to any of the errors specified for the
.BR fork (2)
and
.BR setsid (2).
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR daemon ()
T}	Thread safety	MT-Safe
.TE
.hy
.ad
.sp 1
.SH CONFORMING TO
Not in POSIX.1.
A similar function appears on the BSDs.
The
.BR daemon ()
function first appeared in 4.4BSD.
.SH NOTES
The glibc implementation can also return \-1 when
.I /dev/null
exists but is not a character device with the expected
major and minor numbers.
In this case,
.I errno
need not be set.
.SH BUGS
The GNU C library implementation of this function was taken from BSD,
and does not employ the double-fork technique (i.e.,
.BR fork (2),
.BR setsid (2),
.BR fork (2))
that is necessary to ensure that the resulting daemon process is
not a session leader.
Instead, the resulting daemon
.I is
a session leader.
.\" FIXME . https://sourceware.org/bugzilla/show_bug.cgi?id=19144
.\" Tested using a program that uses daemon() and then opens an
.\" otherwise unused console device (/dev/ttyN) that does not
.\" have an associated getty process.
On systems that follow System V semantics (e.g., Linux),
this means that if the daemon opens a terminal that is not
already a controlling terminal for another session,
then that terminal will inadvertently become
the controlling terminal for the daemon.
.SH SEE ALSO
.BR fork (2),
.BR setsid (2),
.BR daemon (7),
.BR logrotate (8)
