Anthony Liguori
2005-Aug-04 16:03 UTC
[Xen-devel] [PATCH 1/3] Make xenstored manage its own pidfile
The following patch makes xenstored manage its own pidfile which makes it impossible for it to be started multiple times. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com Regards, Anthony Liguori _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Muli Ben-Yehuda
2005-Aug-05 07:58 UTC
Re: [Xen-devel] [PATCH 1/3] Make xenstored manage its own pidfile
On Thu, Aug 04, 2005 at 11:03:11AM -0500, Anthony Liguori wrote:> The following patch makes xenstored manage its own pidfile which makes > it impossible for it to be started multiple times. > > Signed-off-by: Anthony Liguori <aliguori@us.ibm.com > > Regards, > > Anthony Liguori> diff -r 1d240086de52 tools/xenstore/utils.c > --- a/tools/xenstore/utils.c Thu Aug 4 15:02:09 2005 > +++ b/tools/xenstore/utils.c Thu Aug 4 10:54:13 2005 > @@ -84,6 +84,9 @@ > void daemonize(void) > { > pid_t pid; > + int fd; > + size_t len; > + char buf[100]; > > /* Separate from our parent via fork, so init inherits us. */ > if ((pid = fork()) < 0) > @@ -101,6 +104,18 @@ > chdir("/"); > /* Discard our parent''s old-fashioned umask prejudices. */ > umask(0); > + > + fd = open("/var/run/xenstored.pid", O_RDWR | O_CREAT); > + if (fd == -1) { > + exit(1);How about exit(errno), with or without a descriptive message?> + } > + > + if (lockf(fd, F_TLOCK, 0) == -1) { > + exit(1);Likewise?> + > + len = sprintf(buf, "%d\n", getpid()); > + write(fd, buf, len);Check returen value from write? Cheers, Muli -- Muli Ben-Yehuda http://www.mulix.org | http://mulix.livejournal.com/ _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel