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 27extern "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 */ 37typedef 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 */ 44extern 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 */ 50extern 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 */ 56const 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 */ 61int daemon_pid_file_create(void); 62 63/** Removes the PID file of the current process 64 * @return zero on success, nonzero on failure 65 */ 66int 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 */ 71pid_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 */ 77int 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 */ 95int daemon_pid_file_kill_wait(int s, int m); 96 97#ifdef __cplusplus 98} 99#endif 100 101#endif 102