[libvirt] [PATCH 3/5] Introduce functions for checking whether a pidfile is valid
Daniel P. Berrange
berrange at redhat.com
Wed Aug 17 17:38:41 UTC 2011
On Wed, Aug 17, 2011 at 11:34:34AM -0600, Eric Blake wrote:
> On 08/12/2011 08:07 AM, Daniel P. Berrange wrote:
> >From: "Daniel P. Berrange"<berrange at redhat.com>
> >
> >In some cases the caller of virPidFileRead might like extra checks
> >to determine whether the pid just read is really the one they are
> >expecting. This adds virPidFileReadIfAlive which will check whether
> >the pid is still alive with kill(0, -1), and (on linux only) will
> >look at /proc/$PID/path
> >
>
> >+ * Returns -errno upon error, or zero on successful
> >+ * reading of the pidfile. If the PID was not still
> >+ * alive, zero will be returned, but @pid will be
> >+ * set to -1.
> >+ */
> >+int virPidFileReadPathIfAlive(const char *path,
> >+ pid_t *pid,
> >+ const char *binpath)
> >+{
> >+ int rc;
> >+ char *procpath = NULL;
> >+
> >+ rc = virPidFileReadPath(path, pid);
> >+ if (rc< 0)
> >+ return rc;
> >+
> >+ /* Check that it's still alive */
> >+ if (kill(*pid, 0)< 0) {
> >+ *pid = -1;
> >+ return 0;
> >+ }
>
> This fails to compile on mingw, which lacks kill(). What's the best
> approach to fixing this, always fail with -ENOSYS, since right now
> we aren't making any use of pid files on mingw builds anyway?
We already skip the /proc check on non-Linux. So I say we just skip
the kill call on Win32. This stuff is only an extra sanity check
upon loading the pidfile, so I think returning an error is too
mean and we just skip the kill check, or write a win32 specific
check for process ID.
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list