typo
[unix-history] / usr / src / lib / libc / gen / daemon.c
CommitLineData
2e5c011b
MT
1/*-
2 * Copyright (c) 1990 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 */
7
8#if defined(LIBC_SCCS) && !defined(lint)
c21ffddf 9static char sccsid[] = "@(#)daemon.c 5.3 (Berkeley) %G%";
2e5c011b
MT
10#endif /* LIBC_SCCS and not lint */
11
c21ffddf
KB
12#include <sys/fcntl.h>
13#include <unistd.h>
14#include <paths.h>
2e5c011b 15
b662bbb5
MT
16daemon(nochdir, noclose)
17 int nochdir, noclose;
2e5c011b
MT
18{
19 int cpid;
20
21 if ((cpid = fork()) == -1)
22 return (-1);
23 if (cpid)
24 exit(0);
2e5c011b 25 (void) setsid();
b662bbb5
MT
26 if (!nochdir)
27 (void) chdir("/");
28 if (!noclose) {
c21ffddf 29 int devnull = open(_PATH_DEVNULL, O_RDWR, 0);
b662bbb5
MT
30
31 if (devnull != -1) {
c21ffddf
KB
32 (void) dup2(devnull, STDIN_FILENO);
33 (void) dup2(devnull, STDOUT_FILENO);
34 (void) dup2(devnull, STDERR_FILENO);
b662bbb5
MT
35 if (devnull > 2)
36 (void) close(devnull);
37 }
38 }
2e5c011b 39}