[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Freeipmi-devel] [PATCH] bmc-watchdog: write pidfile with the daemon
From: |
Albert Chu |
Subject: |
Re: [Freeipmi-devel] [PATCH] bmc-watchdog: write pidfile with the daemon's PID |
Date: |
Wed, 07 Sep 2011 10:49:39 -0700 |
Hey Diego,
Thanks. I applied the slightly modified attached patch.
Al
On Tue, 2011-09-06 at 23:20 -0700, Diego Elio Pettenò wrote:
> By writing a pidfile, init scripts can rely on that to kill or signal the
> running daemon instance. This is important because relying on the process
> name can be troublesome when using Linux Containers, for instance.
>
> Signed-off-by: Diego Elio Pettenò <address@hidden>
> ---
> bmc-watchdog/src/Makefile.am | 3 ++-
> bmc-watchdog/src/bmc-watchdog.c | 11 ++++++++++-
> 2 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/bmc-watchdog/src/Makefile.am b/bmc-watchdog/src/Makefile.am
> index 04c01e2..38d2f7f 100644
> --- a/bmc-watchdog/src/Makefile.am
> +++ b/bmc-watchdog/src/Makefile.am
> @@ -10,7 +10,8 @@ AM_CPPFLAGS = \
> -I$(top_srcdir)/common/src/portability \
> -I$(top_srcdir)/libfreeipmi/include \
> -D_GNU_SOURCE \
> - -D_REENTRANT
> + -D_REENTRANT \
> + -DLOCALSTATEDIR='"$(localstatedir)"'
>
> sbin_PROGRAMS = bmc-watchdog
>
> diff --git a/bmc-watchdog/src/bmc-watchdog.c b/bmc-watchdog/src/bmc-watchdog.c
> index 566ee65..403bc0a 100644
> --- a/bmc-watchdog/src/bmc-watchdog.c
> +++ b/bmc-watchdog/src/bmc-watchdog.c
> @@ -1677,6 +1677,10 @@ _daemon_init ()
> {
> unsigned int i;
> pid_t pid;
> + FILE *pidfile;
> +
> + if ( (pidfile = fopen(LOCALSTATEDIR "/run/bmc-watchdog.pid", "w")) ==
> NULL )
> + _err_exit ("fopen: %s", strerror (errno));
>
> if ((pid = fork ()) < 0)
> _err_exit ("fork: %s", strerror (errno));
> @@ -1690,8 +1694,13 @@ _daemon_init ()
>
> if ((pid = fork ()) < 0)
> _err_exit ("fork: %s", strerror (errno));
> - if (pid)
> + if (pid) {
> + /* write the 2nd child PID to the pidfile */
> + fprintf(pidfile, "%u\n", pid);
> + fclose(pidfile);
> +
> exit (0); /* 1st child terminates */
> + }
>
> if (chdir ("/") < 0)
> _err_exit ("chdir: %s", strerror (errno));
--
Albert Chu
address@hidden
Computer Scientist
High Performance Systems Division
Lawrence Livermore National Laboratory
bmc.patch
Description: Text Data