E-MailRelay

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

gdaemon.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2001-2018 Graeme Walker <graeme_walker@users.sourceforge.net>
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
16 // ===
17 ///
18 /// \file gdaemon.h
19 ///
20
21 #ifndef G_DAEMON_H
22 #define G_DAEMON_H
23
24 #include "gdef.h"
25 #include "gexception.h"
26 #include "gpidfile.h"
27 #include "gpath.h"
28 #include <sys/types.h>
29 #include <string>
30
31 namespace G
32 {
33 class Daemon ;
34 }
35
36 /// \class G::Daemon
37 /// A static interface for daemonising the calling process. Daemonisation
38 /// includes fork()ing, detaching from the controlling terminal, setting
39 /// the process umask, etc. The windows implementation does nothing.
40 /// \see G::Process
41 ///
42 class G::Daemon
43 {
44 public:
45 G_EXCEPTION( CannotFork , "cannot fork" ) ;
46
47 static void detach() ;
48 ///< Detaches from the parent environment. This typically
49 ///< involves fork()ing, _exit()ing the parent, and calling
50 ///< setsid() in the child.
51
52 static void detach( PidFile & pid_file ) ;
53 ///< An overload which allows for a delayed write of the
54 ///< new process-id to a file.
55 ///<
56 ///< A delayed write is useful for network daemons that open
57 ///< a listening port. A second instance of the process will
58 ///< fail on startup, and should not overwrite the pid file
59 ///< of the running server. In this situation PidFile::commit()
60 ///< should be called just before entering the event loop.
61 ///<
62 ///< Throws PidFile::Error on error.
63
64 private:
65 Daemon() ;
66 static void setsid() ;
67 } ;
68
69 #endif
70
G::Daemon
A static interface for daemonising the calling process.
Definition: gdaemon.h:42
gpidfile.h
G
Low-level classes.
Definition: garg.h:29
gexception.h
gpath.h
G::Daemon::detach
static void detach()
Detaches from the parent environment.
Definition: gdaemon_unix.cpp:32
G::PidFile
A class for creating pid files.
Definition: gpidfile.h:55