On Wed, Jul 19, 2017 at 06:31:06PM +0200, Amador Pahim wrote: > Current implementation is broken. It does not really test if the child > process is running. > > The Popen.returncode will only be set after by a poll(), wait() or > communicate(). If the Popen fails to launch a VM, the Popen.returncode > will not turn to None by itself. > > Instead of using Popen.returncode, let's use Popen.poll(), which > actually checks if child process has terminated. > > Signed-off-by: Amador Pahim <apa...@redhat.com>
I vaguely remember I had a version of that code using poll() and it broke scripts for some reason. I will try to find out why, so we can either fix the script or document the reason why poll() isn't a good choice here. > --- > scripts/qemu.py | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/scripts/qemu.py b/scripts/qemu.py > index 880e3e8219..f0fade32bd 100644 > --- a/scripts/qemu.py > +++ b/scripts/qemu.py > @@ -86,7 +86,7 @@ class QEMUMachine(object): > raise > > def is_running(self): > - return self._popen and (self._popen.returncode is None) > + return self._popen and (self._popen.poll() is None) > > def exitcode(self): > if self._popen is None: > -- > 2.13.3 > -- Eduardo