O_NOCTTY
O_SHLOCK
O_EXLOCK
+ O_CLOEXEC
These constants are only available on Unix.
import sys
import time
import os
+import fcntl
import pwd
import shutil
import stat
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,
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.
#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;