From 876c892960c7e45daf62369ea58f47ad42bfb98e Mon Sep 17 00:00:00 2001 From: default Date: Sun, 17 Nov 2024 10:21:15 +0100 Subject: [PATCH] The server creates a pidfile inside the base directory. --- httpd.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/httpd.c b/httpd.c index 1613e1f..81d2f9e 100644 --- a/httpd.c +++ b/httpd.c @@ -774,6 +774,7 @@ void httpd(void) xs *sem_name = NULL; xs *shm_name = NULL; sem_t anon_job_sem; + xs *pidfile = xs_fmt("%s/server.pid", srv_basedir); address = xs_dict_get(srv_config, "address"); @@ -809,6 +810,17 @@ void httpd(void) srv_log(xs_fmt("httpd%s start %s %s", p_state->use_fcgi ? " (FastCGI)" : "", full_address, USER_AGENT)); + { + FILE *f; + + if ((f = fopen(pidfile, "w")) != NULL) { + fprintf(f, "%d\n", getpid()); + fclose(f); + } + else + srv_log(xs_fmt("Cannot create %s: %s", pidfile, strerror(errno))); + } + /* show the number of usable file descriptors */ struct rlimit r; getrlimit(RLIMIT_NOFILE, &r); @@ -894,4 +906,6 @@ void httpd(void) srv_log(xs_fmt("httpd%s stop %s (run time: %s)", p_state->use_fcgi ? " (FastCGI)" : "", full_address, uptime)); + + unlink(pidfile); }