Issue #12105: Add O_CLOEXEC to the os module.

This commit is contained in:
Charles-François Natali 2011-05-22 20:42:32 +02:00
parent f738d33e5d
commit 1e045b1831
4 changed files with 13 additions and 0 deletions

View File

@ -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.

View File

@ -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,

View File

@ -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.

View File

@ -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;