Code sync
[external/libdaemon.git] / libdaemon / dpid.h
1 #ifndef foodaemonpidhfoo
2 #define foodaemonpidhfoo
3
4 /***
5   This file is part of libdaemon.
6
7   Copyright 2003-2008 Lennart Poettering
8
9   libdaemon is free software; you can redistribute it and/or modify
10   it under the terms of the GNU Lesser General Public License as
11   published by the Free Software Foundation, either version 2.1 of the
12   License, or (at your option) any later version.
13
14   libdaemon is distributed in the hope that it will be useful, but
15   WITHOUT ANY WARRANTY; without even the implied warranty of
16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17   Lesser General Public License for more details.
18
19   You should have received a copy of the GNU Lesser General Public
20   License along with libdaemon. If not, see
21   <http://www.gnu.org/licenses/>.
22 ***/
23
24 #include <sys/types.h>
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
30 /** \file
31  *
32  * Contains an API for manipulating PID files.
33  */
34
35 /** Prototype of a function for generating the name of a PID file.
36  */
37 typedef const char* (*daemon_pid_file_proc_t)(void);
38
39 /** Identification string for the PID file name, only used when
40  * daemon_pid_file_proc is set to daemon_pid_file_proc_default(). Use
41  * daemon_ident_from_argv0() to generate an identification string from
42  * argv[0]
43  */
44 extern const char *daemon_pid_file_ident;
45
46 /** A function pointer which is used to generate the name of the PID
47  * file to manipulate. Points to daemon_pid_file_proc_default() by
48  * default.
49  */
50 extern daemon_pid_file_proc_t daemon_pid_file_proc;
51
52 /** A function for creating a pid file name from
53  * daemon_pid_file_ident
54  * @return The PID file path
55  */
56 const char *daemon_pid_file_proc_default(void);
57
58 /** Creates PID pid file for the current process
59  * @return zero on success, nonzero on failure
60  */
61 int daemon_pid_file_create(void);
62
63 /** Removes the PID file of the current process
64  * @return zero on success, nonzero on failure
65  */
66 int daemon_pid_file_remove(void);
67
68 /** Returns the PID file of a running daemon, if available
69  * @return The PID or negative on failure
70  */
71 pid_t daemon_pid_file_is_running(void);
72
73 /** Kills a running daemon, if available
74  * @param s The signal to send
75  * @return zero on success, nonzero on failure
76  */
77 int daemon_pid_file_kill(int s);
78
79 /** This variable is defined to 1 iff daemon_pid_file_kill_wait() is supported.
80  * @since 0.3
81  * @see daemon_pid_file_kill_wait() */
82 #define DAEMON_PID_FILE_KILL_WAIT_AVAILABLE 1
83
84 /** Similar to daemon_pid_file_kill() but waits until the process
85  * died.  This functions is new in libdaemon 0.3. The macro
86  * DAEMON_PID_FILE_KILL_WAIT_AVAILABLE is defined iff libdaemon
87  * supports this function.
88  *
89  * @param s The signal to send
90  * @param m Seconds to wait at maximum
91  * @return zero on success, nonzero on failure (timeout condition is considered a failure)
92  * @since 0.3
93  * @see DAEMON_PID_FILE_KILL_WAIT_AVAILABLE
94  */
95 int daemon_pid_file_kill_wait(int s, int m);
96
97 #ifdef __cplusplus
98 }
99 #endif
100
101 #endif