143103Smarc /*- 243103Smarc * Copyright (c) 1990 The Regents of the University of California. 343103Smarc * All rights reserved. 443103Smarc * 543103Smarc * %sccs.include.redist.c% 643103Smarc */ 743103Smarc 843103Smarc #if defined(LIBC_SCCS) && !defined(lint) 9*44570Smarc static char sccsid[] = "@(#)daemon.c 5.2 (Berkeley) 06/29/90"; 1043103Smarc #endif /* LIBC_SCCS and not lint */ 1143103Smarc 1243103Smarc #include <sys/file.h> 1343103Smarc 14*44570Smarc daemon(nochdir, noclose) 15*44570Smarc int nochdir, noclose; 1643103Smarc { 1743103Smarc int cpid; 1843103Smarc 1943103Smarc if ((cpid = fork()) == -1) 2043103Smarc return (-1); 2143103Smarc if (cpid) 2243103Smarc exit(0); 23*44570Smarc (void) setsid(); 24*44570Smarc if (!nochdir) 25*44570Smarc (void) chdir("/"); 26*44570Smarc if (!noclose) { 27*44570Smarc int devnull = open("/dev/null", O_RDWR, 0); 2843103Smarc 29*44570Smarc if (devnull != -1) { 30*44570Smarc (void) dup2(devnull, 0); 31*44570Smarc (void) dup2(devnull, 1); 32*44570Smarc (void) dup2(devnull, 2); 33*44570Smarc if (devnull > 2) 34*44570Smarc (void) close(devnull); 35*44570Smarc } 36*44570Smarc } 3743103Smarc } 38