freeipmi-devel
[Top][All Lists]
Advanced

[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

Attachment: bmc.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]