summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--daemon.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/daemon.c b/daemon.c
index c873e8a..3fff805 100644
--- a/daemon.c
+++ b/daemon.c
@@ -179,6 +179,14 @@ static void parseInterval(const char *millis) {
 	restartInterval.tv_nsec = 1000000 * (ms % 1000);
 }
 
+static void setTitle(void) {
+	size_t started = 0;
+	for (size_t i = 0; i < services.len; ++i) {
+		if (services.ptr[i].state == Start) started++;
+	}
+	setproctitle("%zu/%zu services", started, services.len);
+}
+
 int main(int argc, char *argv[]) {
 	setprogname(argv[0]);
 
@@ -284,8 +292,7 @@ int main(int argc, char *argv[]) {
 	for (size_t i = 0; i < services.len; ++i) {
 		serviceStart(&services.ptr[i]);
 	}
-
-	// TODO: setproctitle to number of services currently running.
+	setTitle();
 
 	sigset_t mask;
 	sigemptyset(&mask);
@@ -359,6 +366,7 @@ int main(int argc, char *argv[]) {
 					serviceStart(service);
 				}
 			}
+			setTitle();
 		}
 
 		if (signals[SIGCHLD]) {
@@ -368,6 +376,7 @@ int main(int argc, char *argv[]) {
 				serviceReap(pid, status);
 			}
 			if (pid < 0 && errno != ECHILD) syslog(LOG_WARNING, "waitpid: %m");
+			setTitle();
 			signals[SIGCHLD] = 0;
 		}
 
@@ -388,6 +397,7 @@ int main(int argc, char *argv[]) {
 	close(fifo);
 	unlink(fifoPath);
 
+	setproctitle("stopping");
 	size_t count = 0;
 	for (size_t i = 0; i < services.len; ++i) {
 		serviceStop(&services.ptr[i]);