From cbb3833dbed7ed6a10077cdc8213fc17c0f5ffd1 Mon Sep 17 00:00:00 2001 From: Julien BLACHE Date: Thu, 10 Apr 2008 16:39:06 +0000 Subject: [PATCH] Add a PID file. --- ChangeLog | 2 +- frontend/saned.c | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4395b4486..0263c322f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,7 @@ 2008-04-10 Julien Blache * frontend/saned.c: do not use daemon(), as it's a 4.4BSD/glibc function; OS/2 for instance does not have it. Use an open-coded - equivalent. + equivalent. Add a PID file. 2008-04-06 Nicolas Martin * backend/pixma_mp150.c: diff --git a/frontend/saned.c b/frontend/saned.c index dd01c39b4..ee23e9733 100644 --- a/frontend/saned.c +++ b/frontend/saned.c @@ -190,6 +190,7 @@ struct saned_child *children; int numchildren; #define SANED_CONFIG_FILE "saned.conf" +#define SANED_PID_FILE "/var/run/saned.pid" #define SANED_SERVICE_NAME "sane-port" #define SANED_SERVICE_PORT 6566 @@ -2445,6 +2446,8 @@ run_standalone (int argc, char **argv) int i; int ret; + FILE *pidfile; + /* Unused in this function */ argc = argc; argv = argv; @@ -2473,6 +2476,18 @@ run_standalone (int argc, char **argv) exit (1); } + DBG (DBG_WARN, "Now daemonized\n"); + + /* Write out PID file */ + pidfile = fopen (SANED_PID_FILE, "w"); + if (pidfile) + { + fprintf (pidfile, "%d", getpid()); + fclose (pidfile); + } + else + DBG (DBG_ERR, "Could not write PID file: %s\n", strerror (errno)); + chdir ("/"); dup2 (fd, STDIN_FILENO); @@ -2483,8 +2498,6 @@ run_standalone (int argc, char **argv) setsid (); - DBG (DBG_WARN, "Now daemonized\n"); - signal(SIGINT, sig_int_term_handler); signal(SIGTERM, sig_int_term_handler); }