[pypy-commit] pypy py3.5-noninherit: os.openpty()
arigo
pypy.commits at gmail.com
Fri Aug 26 10:15:30 EDT 2016
Author: Armin Rigo <arigo at tunes.org>
Branch: py3.5-noninherit
Changeset: r86564:83ec87415043
Date: 2016-08-26 16:13 +0200
http://bitbucket.org/pypy/pypy/changeset/83ec87415043/
Log: os.openpty()
diff --git a/pypy/module/posix/interp_posix.py b/pypy/module/posix/interp_posix.py
--- a/pypy/module/posix/interp_posix.py
+++ b/pypy/module/posix/interp_posix.py
@@ -1258,6 +1258,8 @@
"Open a pseudo-terminal, returning open fd's for both master and slave end."
try:
master_fd, slave_fd = os.openpty()
+ rposix.set_inheritable(master_fd, False)
+ rposix.set_inheritable(slave_fd, False)
except OSError as e:
raise wrap_oserror(space, e)
return space.newtuple([space.wrap(master_fd), space.wrap(slave_fd)])
diff --git a/pypy/module/posix/test/test_posix2.py b/pypy/module/posix/test/test_posix2.py
--- a/pypy/module/posix/test/test_posix2.py
+++ b/pypy/module/posix/test/test_posix2.py
@@ -399,6 +399,16 @@
os.write(slave_fd, b'x\n')
data = os.read(master_fd, 100)
assert data.startswith(b'x')
+ os.close(master_fd)
+ os.close(slave_fd)
+
+ def test_openpty_non_inheritable(self):
+ os = self.posix
+ master_fd, slave_fd = os.openpty()
+ assert os.get_inheritable(master_fd) == False
+ assert os.get_inheritable(slave_fd) == False
+ os.close(master_fd)
+ os.close(slave_fd)
if hasattr(__import__(os.name), "forkpty"):
def test_forkpty(self):
More information about the pypy-commit
mailing list