MOON
Server: Apache/2.2.31 (Unix) mod_ssl/2.2.31 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
System: Linux csr818.wilogic.com 2.6.18-419.el5xen #1 SMP Fri Feb 24 22:50:37 UTC 2017 x86_64
User: digitals (531)
PHP: 5.4.45
Disabled: NONE
Upload Files
File: //usr/local/ssl/local/share/man/man3/Proc::Daemon.3
.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  | will give a
.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
.\" expand to `' in nroff, nothing in troff, for use with C<>.
.tr \(*W-|\(bv\*(Tr
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
'br\}
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.if \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.\"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.hy 0
.if n .na
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "Daemon 3"
.TH Daemon 3 "2003-06-19" "perl v5.8.8" "User Contributed Perl Documentation"
.SH "NAME"
Proc::Daemon \- Run Perl program as a daemon process
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 2
\&    use Proc::Daemon;
\&    Proc::Daemon::Init;
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
This module contains the routine \fBInit\fR which can be called by
a Perl program to initialize itself as a daemon.  A daemon is a
process that runs in the background with no controlling terminal.
Generally servers (like \s-1FTP\s0 and \s-1HTTP\s0 servers) run as daemon processes.
Note, do not make the mistake that a daemon == server.
.PP
The \fBProc::Daemon::Init\fR function does the following:
.IP "1" 4
.IX Item "1"
Forks a child and exits the parent process.
.IP "2" 4
.IX Item "2"
Becomes a session leader (which detaches the program from
the controlling terminal).
.IP "3" 4
.IX Item "3"
Forks another child process and exits first child.  This prevents
the potential of acquiring a controlling terminal.
.IP "4" 4
.IX Item "4"
Changes the current working directory to \*(L"/\*(R".
.IP "5" 4
.IX Item "5"
Clears the file creation mask.
.IP "6" 4
.IX Item "6"
Closes all open file descriptors.
.PP
You will notice that no logging facility, or other functionality
is performed.  \fBProc::Daemon::Init\fR just performs the main steps
to initialize a program as daemon.  Since other funtionality can vary
depending on the nature of the program, \fBProc::Daemon\fR leaves
the implementation of other desired functionality to the
caller, or other module/library (like \fBSys::Syslog\fR).
.PP
There is no meaningful return value \fBProc::Daemon::Init\fR.  If an
error occurs in \fBInit\fR so it cannot perform the above steps, than
it croaks with an error message.  One can prevent program termination
by using eval.
.SH "OTHER FUNCTIONS"
.IX Header "OTHER FUNCTIONS"
\&\fBProc::Daemon\fR also defines some other functions.  These functions
can be imported into the callers name space if the function names
are specified during the \fBuse\fR declaration:
.Sh "Fork"
.IX Subsection "Fork"
\&\fBFork\fR is like the built-in \fBfork\fR, but will try to fork if at all
possible, retrying if necessary.  If not possible, \fBFork\fR will
croak.
.Sh "OpenMax"
.IX Subsection "OpenMax"
\&\fBOpenMax\fR returns the maximum file descriptor number.
If undetermined, 64 will be returned.
.SH "NOTES"
.IX Header "NOTES"
.IP "\(bu" 4
\&\fBProc::Daemon::init\fR is still available for backwards capatibilty.
However, it will not perform the double fork, and will return the
session \s-1ID\s0.
.SH "AUTHOR"
.IX Header "AUTHOR"
Earl Hood, earl@earlhood.com
.PP
http://www.earlhood.com/
.SH "CREDITS"
.IX Header "CREDITS"
Implementation of \fBProc::Daemon\fR derived from the following sources:
.IP "\(bu" 4
\&\fBAdvanced Programming in the \s-1UNIX\s0 Environment\fR, by W. Richard Stevens.
Addison\-Wesley, Copyright 1992.
.IP "\(bu" 4
\&\fB\s-1UNIX\s0 Network Progamming\fR, Vol 1, by W. Richard Stevens.
Prentice-Hall \s-1PTR\s0, Copyright 1998.
.SH "DEPENDENCIES"
.IX Header "DEPENDENCIES"
\&\fBCarp\fR, \fB\s-1POSIX\s0\fR.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\s-1POSIX\s0,
Sys::Syslog