static void check_already_running(void);
static int lock_pidfile(FILE *, int command);
+static char *make_pidfile_name(const char *name);
+static pid_t fork_and_clean_up(void);
+static void daemonize_post_detach(void);
/* Returns the file name that would be used for a pidfile if 'name' were
* provided to set_pidfile(). The caller must free the returned string. */
-char *
+static char *
make_pidfile_name(const char *name)
{
return (!name
pidfile = make_pidfile_name(name);
}
-/* Returns an absolute path to the configured pidfile, or a null pointer if no
- * pidfile is configured. The caller must not modify or free the returned
- * string. */
-const char *
-get_pidfile(void)
-{
- return pidfile;
-}
-
/* Sets that we do not chdir to "/". */
void
set_no_chdir(void)
chdir_ = false;
}
-/* Will we chdir to "/" as part of daemonizing? */
-bool
-is_chdir_enabled(void)
-{
- return chdir_;
-}
-
/* Normally, daemonize() or damonize_start() will terminate the program with a
* message if a locked pidfile already exists. If this function is called, an
* existing pidfile will be replaced, with a warning. */
save_fds[fd] = true;
}
-/* Unregisters pidfile from being unlinked when the program terminates via
-* exit() or a fatal signal. */
-void
-remove_pidfile_from_unlink(void)
-{
- if (pidfile) {
- fatal_signal_remove_file_to_unlink(pidfile);
- }
-}
-
-/* Registers pidfile to be unlinked when the program terminates via exit() or a
- * fatal signal. */
-void
-add_pidfile_to_unlink(void)
-{
- if (pidfile) {
- fatal_signal_add_file_to_unlink(pidfile);
- }
-}
-
/* If a pidfile has been configured, creates it and stores the running
* process's pid in it. Ensures that the pidfile will be deleted when the
* process exits. */
* Post-fork, but before returning, this function calls a few other functions
* that are generally useful if the child isn't planning to exec a new
* process. */
-pid_t
+static pid_t
fork_and_clean_up(void)
{
pid_t pid = xfork();
* It only makes sense to call this function as part of an implementation of a
* special daemon subprocess. A normal daemon should just call
* daemonize_complete(). */
-void
+static void
daemonize_post_detach(void)
{
if (detach) {
daemon_set_monitor(); \
break;
-char *make_pidfile_name(const char *name);
void set_pidfile(const char *name);
-const char *get_pidfile(void);
void set_no_chdir(void);
-bool is_chdir_enabled(void);
void set_detach(void);
bool get_detach(void);
void daemon_set_monitor(void);
void daemon_save_fd(int fd);
-void remove_pidfile_from_unlink(void);
-void add_pidfile_to_unlink(void);
void daemonize(void);
void daemonize_start(void);
void daemonize_complete(void);
void ignore_existing_pidfile(void);
void daemon_usage(void);
pid_t read_pidfile(const char *name);
-pid_t read_pidfile_if_exists(const char *name);
-
-pid_t fork_and_clean_up(void);
-void daemonize_post_detach(void);
#endif /* daemon.h */
_pidfile = make_pidfile_name(name)
-def get_pidfile():
- """Returns an absolute path to the configured pidfile, or None if no
- pidfile is configured."""
- return _pidfile
-
-
def set_no_chdir():
"""Sets that we do not chdir to "/"."""
global _chdir
_chdir = False
-def is_chdir_enabled():
- """Will we chdir to "/" as part of daemonizing?"""
- return _chdir
-
-
def ignore_existing_pidfile():
"""Normally, daemonize() or daemonize_start() will terminate the program
with a message if a locked pidfile already exists. If this function is