diff options
-rw-r--r-- | Doc/library/os.rst | 1 | ||||
-rw-r--r-- | Lib/test/test_posix.py | 7 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Modules/posixmodule.c | 3 |
4 files changed, 13 insertions, 0 deletions
diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 86f587f..6ef6d9d 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1298,6 +1298,7 @@ or `the MSDN <http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Window O_NOCTTY O_SHLOCK O_EXLOCK + O_CLOEXEC These constants are only available on Unix. diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index 0e9ac75..9c2cac3 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -9,6 +9,7 @@ import errno import sys import time import os +import fcntl import pwd import shutil import stat @@ -307,6 +308,12 @@ class PosixTester(unittest.TestCase): fp1.close() fp2.close() + @unittest.skipUnless(hasattr(os, 'O_CLOEXEC'), "needs os.O_CLOEXEC") + def test_oscloexec(self): + fd = os.open(support.TESTFN, os.O_RDONLY|os.O_CLOEXEC) + self.addCleanup(os.close, fd) + self.assertTrue(fcntl.fcntl(fd, fcntl.F_GETFD) & fcntl.FD_CLOEXEC) + def test_osexlock(self): if hasattr(posix, "O_EXLOCK"): fd = os.open(support.TESTFN, @@ -153,6 +153,8 @@ Core and Builtins Library ------- +- Issue #12105: Add O_CLOEXEC to the os module. + - Issue #12079: Decimal('Infinity').fma(Decimal('0'), (3.91224318126786e+19+0j)) now raises TypeError (reflecting the invalid type of the 3rd argument) rather than Decimal.InvalidOperation. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 396243e..9c19ed0 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -9783,6 +9783,9 @@ all_ins(PyObject *d) #ifdef PRIO_USER if (ins(d, "PRIO_USER", (long)PRIO_USER)) return -1; #endif +#ifdef O_CLOEXEC + if (ins(d, "O_CLOEXEC", (long)O_CLOEXEC)) return -1; +#endif /* posix - constants for *at functions */ #ifdef AT_SYMLINK_NOFOLLOW if (ins(d, "AT_SYMLINK_NOFOLLOW", (long)AT_SYMLINK_NOFOLLOW)) return -1; |