On Tue, Nov 14, 2017 at 11:22:43AM +0100, Amador Pahim wrote:
> The 'returncode' Popen attribute is not guaranteed to be updated. It
> actually depends on a call to either poll(), wait() or communicate().
>
> On the other hand, poll() will: "Check if child process has terminated.
> Set and return returncode attribute."
>
> Let's use the poll() to check whether the process is running and to get
> the updated process exit code, when the process is finished.
>
> Reviewed-by: Fam Zheng <famz@redhat.com>
> Signed-off-by: Amador Pahim <apahim@redhat.com>
> ---
> scripts/qemu.py | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/qemu.py b/scripts/qemu.py
> index 7bd10b1a1d..d3824a7a0b 100644
> --- a/scripts/qemu.py
> +++ b/scripts/qemu.py
> @@ -149,12 +149,12 @@ class QEMUMachine(object):
> raise
>
> def is_running(self):
> - return self._popen is not None and self._popen.returncode is None
> + return self._popen is not None and self._popen.poll() is None
This should be safe now, after patch 4/8.
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
--
Eduardo