README
1 libdaemon 0.14
2
3 Copyright 2003-2009 Lennart Poettering <mzqnrzba (at) 0pointer (dot)
4 de>
5 * [1]License
6 * [2]News
7 * [3]Overview
8 * [4]Current Status
9 * [5]Documentation
10 * [6]Requirements
11 * [7]Installation
12 * [8]Acknowledgements
13 * [9]Download
14
15License
16
17 This program is free software; you can redistribute it and/or modify it
18 under the terms of the GNU Lesser General Public License as published
19 by the Free Software Foundation, either version 2.1 of the License, or
20 (at your option) any later version.
21
22 This program is distributed in the hope that it will be useful, but
23 WITHOUT ANY WARRANTY; without even the implied warranty of
24 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
25 General Public License for more details.
26
27News
28
29 Sun Oct 18 2009:
30
31 [10]Version 0.14 released; changes include: add daemon_set_verbosity()
32 call; numerous updates
33
34 Tue Jul 29 2008:
35
36 [11]Version 0.13 released; changes include: add daemon_reset_sigs() and
37 daemon_unblock_sigs() calls for resetting signal handlers to sensible
38 states; improve error handling.
39
40 Tue Jul 10 2007:
41
42 [12]Version 0.12 released; changes include: make daemon_close_all()
43 actually work properly.
44
45 Fri Jun 22 2007:
46
47 [13]Version 0.11 released; changes include: automatically detect
48 whether lynx is installed; properly set errno on every error condition;
49 add new function daemon_close_all() to close all open file descriptors
50 except a given set; add daemon_logv(), which is identical to
51 daemon_log(), but takes a va_list argument; add daemon_execv() in
52 similar style; other fixes
53
54 Thu Nov 24 2005:
55
56 [14]Version 0.10 released; changes include: make logging compatible
57 with daemons running in a chroot() environment
58
59 Fri Nov 18 2005:
60
61 [15]Version 0.9 released; changes include: portability (FreeBSD,
62 NetBSD, OpenBSD, Darwin, Solaris, Cygwin); some minor header file
63 cleanups; fix access mode of PID files; other cleanups; license change
64 from GPL to LGPL
65
66 Sat Jun 4 2005:
67
68 [16]Version 0.8 released; changes include: proper PID file locking
69
70 Sat Dec 18 2004:
71
72 [17]Version 0.7 released; changes include: minor cleanups; C++
73 compatibility; gcc 2.95 compatiblity
74
75 Wed Apr 7 2004:
76
77 [18]Version 0.6 released; changes include: backgrounding fixes, minor
78 other stuff
79
80 Tue Feb 10 2004:
81
82 [19]Version 0.5 released; changes include: signal handling fix, forking
83 fix
84
85 Sat Jan 10 2004:
86
87 [20]Version 0.4 released; changes include: new module dexec.c; added
88 pkg-config support.
89
90 Mon Oct 20 2003:
91
92 [21]Version 0.3 released; changes include: documentation update, build
93 fixes, RPM spec file added, added new function int
94 daemon_pid_file_kill_wait().
95
96 Thu July 10 2003:
97
98 [22]Version 0.2 released; changes include: ugly umask error fix,
99 documentation update
100
101 Mon July 7 2003:
102
103 [23]Version 0.1 released
104
105Overview
106
107 libdaemon is a lightweight C library that eases the writing of UNIX
108 daemons. It consists of the following parts:
109 * A wrapper around fork() which does the correct daemonization
110 procedure of a process
111 * A wrapper around syslog() for simpler and compatible log output to
112 Syslog or STDERR
113 * An API for writing PID files
114 * An API for serializing UNIX signals into a pipe for usage with
115 select() or poll()
116 * An API for running subprocesses with STDOUT and STDERR redirected
117 to syslog.
118
119 APIs like these are used in most daemon software available. It is not
120 that simple to get it done right and code duplication is not a goal.
121
122 libdaemon is currently used by [24]ifplugd, [25]Avahi, [26]ivam2,
123 [27]Nautilus-Share and [28]aeswepd.
124
125Current Status
126
127 Version 0.14 is feature complete.
128
129Documentation
130
131 An extensive API reference is [29]available
132
133Requirements
134
135 libdaemon was developed and tested on Debian GNU/Linux "testing" from
136 July 2003, it should work on most other Linux distributions (and some
137 Unix versions) since it uses GNU Autoconf and GNU libtool for source
138 code configuration and shared library management.
139
140 libdaemon is known to work on modern Linux systems, FreeBSD, NetBSD,
141 OpenBSD, Darwin, Solaris and Windows/Cygwin.
142
143Installation
144
145 As this package is made with the GNU autotools you should run
146 ./configure inside the distribution directory for configuring the
147 source tree. After that you should run make for compilation and make
148 install (as root) for installation of libdaemon.
149
150 Please use gmake instead of traditional make for compilation on
151 non-Linux systems.
152
153Acknowledgements
154
155 Sebastien Estienne, for a lot of portability work.
156
157Download
158
159 The newest release is always available from
160 [30]http://0pointer.de/lennart/projects/libdaemon/
161
162 Get libdaemon's development sources from the [31]GIT [32]repository
163 ([33]gitweb):
164git clone git://git.0pointer.de/libdaemon
165
166 You may find an up to date Debian package of libdaemon on the
167 [34]Debian package repository.
168
169 If you want to be notified whenever I release a new version of this
170 software use the subscription feature of [35]Freshmeat.
171 __________________________________________________________________
172
173
174 Lennart Poettering <mzqnrzba (at) 0pointer (dot) de>, October 2009
175
176References
177
178 1. README#license
179 2. README#news
180 3. README#overview
181 4. README#status
182 5. README#documentation
183 6. README#requirements
184 7. README#installation
185 8. README#acks
186 9. README#download
187 10. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.14.tar.gz
188 11. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.13.tar.gz
189 12. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.12.tar.gz
190 13. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.11.tar.gz
191 14. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.10.tar.gz
192 15. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.9.tar.gz
193 16. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.8.tar.gz
194 17. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.7.tar.gz
195 18. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.6.tar.gz
196 19. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.5.tar.gz
197 20. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.4.tar.gz
198 21. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.3.tar.gz
199 22. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.2.tar.gz
200 23. http://0pointer.de/lennart/projects/libdaemon/libdaemon-0.1.tar.gz
201 24. http://0pointer.de/lennart/projects/ifplugd/
202 25. http://freedesktop.org/Software/Avahi
203 26. http://0pointer.de/lennart/projects/ivam2/
204 27. http://gentoo.ovibes.net/nautilus-share/mediawiki-1.4.4/index.php/Accueil
205 28. http://0pointer.de/lennart/projects/aeswepd/
206 29. reference/html/index.html
207 30. http://0pointer.de/lennart/projects/libdaemon/
208 31. http://git.or.cz/
209 32. git://git.0pointer.de/libdaemon
210 33. http://git.0pointer.de/?p=libdaemon.git
211 34. http://packages.debian.org/libdaemon0
212 35. http://freshmeat.net/projects/libdaemon/
213
README.html.in
1<?xml version="1.0" encoding="iso-8859-15"?> <!-- -*-html-helper-*- -->
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4
5<head>
6<title>libdaemon @PACKAGE_VERSION@</title>
7<link rel="stylesheet" type="text/css" href="style.css" />
8</head>
9
10<body>
11<h1><a name="top">libdaemon @PACKAGE_VERSION@</a></h1>
12
13<p><i>Copyright 2003-2009 Lennart Poettering <@PACKAGE_BUGREPORT@></i></p>
14
15<ul class="toc">
16 <li><a href="#license">License</a></li>
17 <li><a href="#news">News</a></li>
18 <li><a href="#overview">Overview</a></li>
19 <li><a href="#status">Current Status</a></li>
20 <li><a href="#documentation">Documentation</a></li>
21 <li><a href="#requirements">Requirements</a></li>
22 <li><a href="#installation">Installation</a></li>
23 <li><a href="#acks">Acknowledgements</a></li>
24 <li><a href="#download">Download</a></li>
25</ul>
26
27<h2><a name="license">License</a></h2>
28
29<p>This program is free software; you can redistribute it and/or
30modify it under the terms of the GNU Lesser General Public License as
31published by the Free Software Foundation, either version 2.1 of the
32License, or (at your option) any later version.</p>
33
34<p>This program is distributed in the hope that it will be useful, but
35WITHOUT ANY WARRANTY; without even the implied warranty of
36MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
37Lesser General Public License for more details.</p>
38
39<h2><a name="news">News</a></h2>
40
41<div class="news-date">Sun Oct 18 2009: </div>
42<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.14.tar.gz">Version 0.14</a> released; changes include: add <tt>daemon_set_verbosity()</tt> call; numerous updates</p>
43
44<div class="news-date">Tue Jul 29 2008: </div>
45<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.13.tar.gz">Version 0.13</a> released; changes include: add <tt>daemon_reset_sigs()</tt> and <tt>daemon_unblock_sigs()</tt> calls for resetting signal handlers to sensible states; improve error handling.</p>
46
47<div class="news-date">Tue Jul 10 2007: </div>
48<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.12.tar.gz">Version 0.12</a> released; changes include: make <tt>daemon_close_all()</tt> actually work properly.</p>
49
50<div class="news-date">Fri Jun 22 2007: </div>
51<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.11.tar.gz">Version 0.11</a> released; changes include: automatically detect whether lynx is installed; properly set <tt>errno</tt> on every error condition; add new function <tt>daemon_close_all()</tt> to close all open file descriptors except a given set; add <tt>daemon_logv()</tt>, which is identical to <tt>daemon_log()</tt>, but takes a <tt>va_list</tt> argument; add <tt>daemon_execv()</tt> in similar style; other fixes</p>
52
53<div class="news-date">Thu Nov 24 2005: </div>
54<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.10.tar.gz">Version 0.10</a> released; changes include: make logging compatible with daemons running in a <tt>chroot()</tt> environment</p>
55
56<div class="news-date">Fri Nov 18 2005: </div>
57<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.9.tar.gz">Version 0.9</a> released; changes include: portability (FreeBSD, NetBSD, OpenBSD, Darwin, Solaris, Cygwin); some minor header file cleanups; fix access mode of PID files; other cleanups; license change from GPL to LGPL</p>
58
59<div class="news-date">Sat Jun 4 2005: </div>
60<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.8.tar.gz">Version 0.8</a> released; changes include: proper PID file locking</p>
61
62<div class="news-date">Sat Dec 18 2004: </div>
63<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.7.tar.gz">Version 0.7</a> released; changes include: minor cleanups; C++ compatibility; gcc 2.95 compatiblity</p>
64
65<div class="news-date">Wed Apr 7 2004: </div>
66<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.6.tar.gz">Version 0.6</a> released; changes include: backgrounding fixes, minor other stuff</p>
67
68<div class="news-date">Tue Feb 10 2004: </div>
69<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.5.tar.gz">Version 0.5</a> released; changes include: signal handling fix, forking fix</p>
70
71<div class="news-date">Sat Jan 10 2004: </div>
72<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.4.tar.gz">Version 0.4</a> released; changes include: new module <tt>dexec.c</tt>; added <tt>pkg-config</tt> support.</p>
73
74<div class="news-date">Mon Oct 20 2003: </div>
75<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.3.tar.gz">Version 0.3</a> released; changes include: documentation update, build fixes, RPM spec file added, added new function int <tt>daemon_pid_file_kill_wait()</tt>.</p>
76
77<div class="news-date">Thu July 10 2003: </div>
78<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.2.tar.gz">Version 0.2</a> released; changes include: ugly umask error fix, documentation update</p>
79
80<div class="news-date">Mon July 7 2003: </div>
81<p class="news-text"><a href="@PACKAGE_URL@libdaemon-0.1.tar.gz">Version 0.1</a> released</p>
82
83<h2><a name="overview">Overview</a></h2>
84
85<p><tt>libdaemon</tt> is a lightweight C library that eases the writing of UNIX
86daemons. It consists of the following parts:</p>
87
88<ul>
89 <li>A wrapper around <tt>fork()</tt> which does the correct
90 daemonization procedure of a process</li>
91
92 <li>A wrapper around <tt>syslog()</tt> for simpler and compatible
93 log output to Syslog or STDERR</li>
94
95 <li>An API for writing PID files</li>
96
97 <li>An API for serializing UNIX signals into a pipe for
98 usage with <tt>select()</tt> or <tt>poll()</tt></li>
99
100 <li>An API for running subprocesses with STDOUT and STDERR redirected to syslog.</li>
101</ul>
102
103<p>APIs like these are used in most daemon software
104available. It is not that simple to get it done right and code
105duplication is not a goal.</p>
106
107<p><tt>libdaemon</tt> is currently used by <a
108href="http://0pointer.de/lennart/projects/ifplugd/"><tt>ifplugd</tt></a>,
109<a
110href="http://freedesktop.org/Software/Avahi">Avahi</a>,
111<a
112href="http://0pointer.de/lennart/projects/ivam2/"><tt>ivam2</tt></a>,
113<a href="http://gentoo.ovibes.net/nautilus-share/mediawiki-1.4.4/index.php/Accueil">Nautilus-Share</a>
114and <a
115href="http://0pointer.de/lennart/projects/aeswepd/"><tt>aeswepd</tt></a>.</p>
116
117<h2><a name="status">Current Status</a></h2>
118
119<p>Version @PACKAGE_VERSION@ is feature complete.</p>
120
121<h2><a name="documentation">Documentation</a></h2>
122
123<p>An extensive API reference is <a
124href="reference/html/index.html">available</a></p>
125
126<h2><a name="requirements">Requirements</a></h2>
127
128<p><tt>libdaemon</tt> was developed and tested on Debian GNU/Linux
129"testing" from July 2003, it should work on most other Linux
130distributions (and some Unix versions) since it uses GNU Autoconf and
131GNU libtool for source code configuration and shared library
132management.</p>
133
134<p><tt>libdaemon</tt> is known to work on modern Linux systems, FreeBSD, NetBSD, OpenBSD, Darwin, Solaris and Windows/Cygwin.</p>
135
136<h2><a name="installation">Installation</a></h2>
137
138<p>As this package is made with the GNU autotools you should run
139<tt>./configure</tt> inside the distribution directory for configuring
140the source tree. After that you should run <tt>make</tt> for
141compilation and <tt>make install</tt> (as root) for installation of
142<tt>libdaemon</tt>.</p>
143
144<p>Please use <tt>gmake</tt> instead of traditional <tt>make</tt> for compilation on non-Linux systems.</p>
145
146<h2><a name="acks">Acknowledgements</a></h2>
147
148<p>Sebastien Estienne, for a lot of portability work.</p>
149
150<h2><a name="download">Download</a></h2>
151
152<p>The newest release is always available from <a href="@PACKAGE_URL@">@PACKAGE_URL@</a></p>
153
154<p>Get <tt>libdaemon</tt>'s development sources from the <a href="http://git.or.cz/">GIT</a> <a href="git://git.0pointer.de/libdaemon">repository</a> (<a href="http://git.0pointer.de/?p=libdaemon.git">gitweb</a>): </p>
155
156<pre>git clone git://git.0pointer.de/libdaemon</pre>
157
158<p>You may find an up to date Debian package of <tt>libdaemon</tt> on the <a href="http://packages.debian.org/libdaemon0">Debian package repository</a>.</p>
159
160<p>If you want to be notified whenever I release a new version of this software use the subscription feature of <a href="http://freshmeat.net/projects/libdaemon/">Freshmeat</a>.</p>
161
162<hr/>
163<address class="grey">Lennart Poettering <@PACKAGE_BUGREPORT@>, October 2009</address>
164
165</body>
166</html>
167