diff -r 9d1fb6a9104b Doc/library/os.rst --- a/Doc/library/os.rst Thu May 19 19:56:12 2011 +0200 +++ b/Doc/library/os.rst Thu May 19 22:21:09 2011 +0200 @@ -1298,6 +1298,7 @@ O_NOCTTY O_SHLOCK O_EXLOCK + O_CLOEXEC These constants are only available on Unix. diff -r 9d1fb6a9104b Lib/test/test_posix.py --- a/Lib/test/test_posix.py Thu May 19 19:56:12 2011 +0200 +++ b/Lib/test/test_posix.py Thu May 19 22:21:09 2011 +0200 @@ -9,6 +9,7 @@ import sys import time import os +import fcntl import pwd import shutil import stat @@ -307,6 +308,12 @@ 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, diff -r 9d1fb6a9104b Modules/posixmodule.c --- a/Modules/posixmodule.c Thu May 19 19:56:12 2011 +0200 +++ b/Modules/posixmodule.c Thu May 19 22:21:09 2011 +0200 @@ -9783,6 +9783,9 @@ #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;