From 12677acf0a0bda4a863279ece65eccda6c36d6b1 Mon Sep 17 00:00:00 2001 From: "Anthony G. Basile" Date: Mon, 10 Dec 2012 14:49:39 -0500 Subject: CONFIG_PID_FILE_PATH: new configuration option for pidfile paths We set a default path for the directory where pidfiles are create when FEATURE_PIDFILE is selected. The default has no effect on applets which must specify a pidfile path on the command line to run, and it can be overridden by applets which optionally allow the user to specify the pidfile path. We also add pidfile write/remove support for klogd, ntpd and watchdog. For syslogd, we add a missing remove_pidfile() for better cleanup on daemon exit. Signed-off-by: Anthony G. Basile Signed-off-by: Mike Frysinger --- sysklogd/klogd.c | 3 +++ sysklogd/syslogd.c | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'sysklogd') diff --git a/sysklogd/klogd.c b/sysklogd/klogd.c index efa0e537a..f59a155b4 100644 --- a/sysklogd/klogd.c +++ b/sysklogd/klogd.c @@ -195,6 +195,8 @@ int klogd_main(int argc UNUSED_PARAM, char **argv) syslog(LOG_NOTICE, "klogd started: %s", bb_banner); + write_pidfile(CONFIG_PID_FILE_PATH "/klogd.pid"); + used = 0; while (!bb_got_signal) { int n; @@ -258,6 +260,7 @@ int klogd_main(int argc UNUSED_PARAM, char **argv) klogd_close(); syslog(LOG_NOTICE, "klogd: exiting"); + remove_pidfile(CONFIG_PID_FILE_PATH "/klogd.pid"); if (bb_got_signal) kill_myself_with_sig(bb_got_signal); return EXIT_FAILURE; diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index fc380d9f9..5854bcd0f 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c @@ -916,6 +916,7 @@ static void do_syslogd(void) timestamp_and_log_internal("syslogd exiting"); puts("syslogd exiting"); + remove_pidfile(CONFIG_PID_FILE_PATH "/syslogd.pid"); if (ENABLE_FEATURE_IPC_SYSLOG) ipcsyslog_cleanup(); kill_myself_with_sig(bb_got_signal); @@ -979,8 +980,10 @@ int syslogd_main(int argc UNUSED_PARAM, char **argv) if (!(opts & OPT_nofork)) { bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv); } + //umask(0); - why?? - write_pidfile("/var/run/syslogd.pid"); + write_pidfile(CONFIG_PID_FILE_PATH "/syslogd.pid"); + do_syslogd(); /* return EXIT_SUCCESS; */ } -- cgit v1.2.3