summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/subprocess.py23
-rw-r--r--Lib/uuid.py2
2 files changed, 19 insertions, 6 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index e10b010..7ae8df1 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -102,8 +102,19 @@ if _mswindows:
else:
if _can_fork_exec:
from _posixsubprocess import fork_exec as _fork_exec
+ # used in methods that are called by __del__
+ _waitpid = os.waitpid
+ _waitstatus_to_exitcode = os.waitstatus_to_exitcode
+ _WIFSTOPPED = os.WIFSTOPPED
+ _WSTOPSIG = os.WSTOPSIG
+ _WNOHANG = os.WNOHANG
else:
_fork_exec = None
+ _waitpid = None
+ _waitstatus_to_exitcode = None
+ _WIFSTOPPED = None
+ _WSTOPSIG = None
+ _WNOHANG = None
import select
import selectors
@@ -1890,19 +1901,19 @@ class Popen:
def _handle_exitstatus(self, sts,
- waitstatus_to_exitcode=os.waitstatus_to_exitcode,
- _WIFSTOPPED=os.WIFSTOPPED,
- _WSTOPSIG=os.WSTOPSIG):
+ _waitstatus_to_exitcode=_waitstatus_to_exitcode,
+ _WIFSTOPPED=_WIFSTOPPED,
+ _WSTOPSIG=_WSTOPSIG):
"""All callers to this function MUST hold self._waitpid_lock."""
# This method is called (indirectly) by __del__, so it cannot
# refer to anything outside of its local scope.
if _WIFSTOPPED(sts):
self.returncode = -_WSTOPSIG(sts)
else:
- self.returncode = waitstatus_to_exitcode(sts)
+ self.returncode = _waitstatus_to_exitcode(sts)
- def _internal_poll(self, _deadstate=None, _waitpid=os.waitpid,
- _WNOHANG=os.WNOHANG, _ECHILD=errno.ECHILD):
+ def _internal_poll(self, _deadstate=None, _waitpid=_waitpid,
+ _WNOHANG=_WNOHANG, _ECHILD=errno.ECHILD):
"""Check if child process has terminated. Returns returncode
attribute.
diff --git a/Lib/uuid.py b/Lib/uuid.py
index f179d68..8fe2479 100644
--- a/Lib/uuid.py
+++ b/Lib/uuid.py
@@ -524,6 +524,8 @@ def _ip_getnode():
def _arp_getnode():
"""Get the hardware address on Unix by running arp."""
import os, socket
+ if not hasattr(socket, "gethostbyname"):
+ return None
try:
ip_addr = socket.gethostbyname(socket.gethostname())
except OSError: