X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fdaemon.c;h=46c9a88e750bc554cda1c92393a6412bd7eba633;hb=7e56c85c02c547deda93ec09a589eae7e253fc58;hp=8629114637f0df62cb2631d82145ca6b8615fbf3;hpb=ff8decf1a318b4a611cb08bb3f12833044e8a872;p=openvswitch diff --git a/lib/daemon.c b/lib/daemon.c index 86291146..46c9a88e 100644 --- a/lib/daemon.c +++ b/lib/daemon.c @@ -22,6 +22,7 @@ #include #include #include +#include "command-line.h" #include "fatal-signal.h" #include "dirs.h" #include "lockfile.h" @@ -325,13 +326,19 @@ monitor_daemon(pid_t daemon_pid) /* XXX Should limit the rate at which we restart the daemon. */ /* XXX Should log daemon's stderr output at startup time. */ const char *saved_program_name; + char *status_msg; saved_program_name = program_name; program_name = xasprintf("monitor(%s)", program_name); + status_msg = xstrdup("healthy"); for (;;) { int retval; int status; + proctitle_set("%s: monitoring pid %lu (%s)", + saved_program_name, (unsigned long int) daemon_pid, + status_msg); + do { retval = waitpid(daemon_pid, &status, 0); } while (retval == -1 && errno == EINTR); @@ -339,25 +346,28 @@ monitor_daemon(pid_t daemon_pid) if (retval == -1) { ovs_fatal(errno, "waitpid failed"); } else if (retval == daemon_pid) { - char *status_msg = process_status_msg(status); - if (should_restart(status)) { - VLOG_ERR("%s daemon died unexpectedly (%s), restarting", - saved_program_name, status_msg); - free(status_msg); + char *s = process_status_msg(status); + free(status_msg); + status_msg = xasprintf("pid %lu died, %s", + (unsigned long int) daemon_pid, s); + free(s); + if (should_restart(status)) { + VLOG_ERR("%s, restarting", status_msg); daemon_pid = fork_and_wait_for_startup(&daemonize_fd); if (!daemon_pid) { break; } } else { - VLOG_INFO("%s daemon exited normally (%s), exiting", - saved_program_name, status_msg); + VLOG_INFO("%s, exiting", status_msg); exit(0); } } } + free(status_msg); /* Running in new daemon process. */ + proctitle_restore(); free((char *) program_name); program_name = saved_program_name; }