issue #550: fix up TTY ioctls on WSL 2016 Anniversary Update
This commit is contained in:
parent
0b177f1491
commit
87c8ab4323
|
@ -140,7 +140,6 @@ try:
|
||||||
except NameError:
|
except NameError:
|
||||||
BaseException = Exception
|
BaseException = Exception
|
||||||
|
|
||||||
IS_WSL = 'Microsoft' in os.uname()[2]
|
|
||||||
PY24 = sys.version_info < (2, 5)
|
PY24 = sys.version_info < (2, 5)
|
||||||
PY3 = sys.version_info > (3,)
|
PY3 = sys.version_info > (3,)
|
||||||
if PY3:
|
if PY3:
|
||||||
|
@ -164,6 +163,14 @@ try:
|
||||||
except NameError:
|
except NameError:
|
||||||
next = lambda it: it.next()
|
next = lambda it: it.next()
|
||||||
|
|
||||||
|
# #550: prehistoric WSL did not advertise itself in uname output.
|
||||||
|
try:
|
||||||
|
fp = open('/proc/sys/kernel/osrelease')
|
||||||
|
IS_WSL = 'Microsoft' in fp.read()
|
||||||
|
fp.close()
|
||||||
|
except IOError:
|
||||||
|
IS_WSL = False
|
||||||
|
|
||||||
|
|
||||||
#: Default size for calls to :meth:`Side.read` or :meth:`Side.write`, and the
|
#: Default size for calls to :meth:`Side.read` or :meth:`Side.write`, and the
|
||||||
#: size of buffers configured by :func:`mitogen.parent.create_socketpair`. This
|
#: size of buffers configured by :func:`mitogen.parent.create_socketpair`. This
|
||||||
|
|
|
@ -371,11 +371,11 @@ def create_child(args, merge_stdio=False, stderr_pipe=False, preexec_fn=None):
|
||||||
|
|
||||||
def _acquire_controlling_tty():
|
def _acquire_controlling_tty():
|
||||||
os.setsid()
|
os.setsid()
|
||||||
if sys.platform == 'linux2':
|
if sys.platform in ('linux', 'linux2'):
|
||||||
# On Linux, the controlling tty becomes the first tty opened by a
|
# On Linux, the controlling tty becomes the first tty opened by a
|
||||||
# process lacking any prior tty.
|
# process lacking any prior tty.
|
||||||
os.close(os.open(os.ttyname(2), os.O_RDWR))
|
os.close(os.open(os.ttyname(2), os.O_RDWR))
|
||||||
if hasattr(termios, 'TIOCSCTTY'):
|
if hasattr(termios, 'TIOCSCTTY') and not mitogen.core.IS_WSL:
|
||||||
# On BSD an explicit ioctl is required. For some inexplicable reason,
|
# On BSD an explicit ioctl is required. For some inexplicable reason,
|
||||||
# Python 2.6 on Travis also requires it.
|
# Python 2.6 on Travis also requires it.
|
||||||
fcntl.ioctl(2, termios.TIOCSCTTY)
|
fcntl.ioctl(2, termios.TIOCSCTTY)
|
||||||
|
|
Loading…
Reference in New Issue