Issue #16860: In tempfile, use O_CLOEXEC when available to set the
close-on-exec flag atomically.
diff --git a/Lib/tempfile.py b/Lib/tempfile.py
index 90b3c20..0aaee54 100644
--- a/Lib/tempfile.py
+++ b/Lib/tempfile.py
@@ -57,6 +57,8 @@
 _allocate_lock = _thread.allocate_lock
 
 _text_openflags = _os.O_RDWR | _os.O_CREAT | _os.O_EXCL
+if hasattr(_os, 'O_CLOEXEC'):
+    _text_openflags |= _os.O_CLOEXEC
 if hasattr(_os, 'O_NOINHERIT'):
     _text_openflags |= _os.O_NOINHERIT
 if hasattr(_os, 'O_NOFOLLOW'):
diff --git a/Misc/NEWS b/Misc/NEWS
index e638039..284ce1a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -204,6 +204,9 @@
 Library
 -------
 
+- Issue #16860: In tempfile, use O_CLOEXEC when available to set the
+  close-on-exec flag atomically.
+
 - Issue #16674: random.getrandbits() is now 20-40% faster for small integers.
 
 - Issue #16009: JSON error messages now provide more information.