提交 17589cae 编写于 作者: A Amador Pahim 提交者: Eduardo Habkost

qemu.py: use poll() instead of 'returncode'

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: NFam Zheng <famz@redhat.com>
eviewed-by: NEduardo Habkost <ehabkost@redhat.com>
Signed-off-by: NAmador Pahim <apahim@redhat.com>
Message-Id: <20180122205033.24893-5-apahim@redhat.com>
Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
上级 04a963b4
...@@ -150,12 +150,12 @@ class QEMUMachine(object): ...@@ -150,12 +150,12 @@ class QEMUMachine(object):
raise raise
def is_running(self): 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
def exitcode(self): def exitcode(self):
if self._popen is None: if self._popen is None:
return None return None
return self._popen.returncode return self._popen.poll()
def get_pid(self): def get_pid(self):
if not self.is_running(): if not self.is_running():
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册