If possible, set FD_CLOEXEC flag on file descriptors opened using
TemporaryFile.  This flag causes the fd to be closed on exec().
diff --git a/Lib/tempfile.py b/Lib/tempfile.py
index b981084..7492240 100644
--- a/Lib/tempfile.py
+++ b/Lib/tempfile.py
@@ -180,6 +180,17 @@
             setattr(self, name, a)
         return a
 
+try:
+    import fcntl as _fcntl
+    def _set_cloexec(fd, flag=_fcntl.FD_CLOEXEC):
+        flags = _fcntl.fcntl(fd, _fcntl.F_GETFD, 0)
+        if flags >= 0:
+            # flags read successfully, modify
+            flags |= flag
+            _fcntl.fcntl(fd, _fcntl.F_SETFD, flags)
+except (ImportError, AttributeError):
+    def _set_cloexec(fd):
+        pass
 
 def TemporaryFile(mode='w+b', bufsize=-1, suffix=""):
     """Create and return a temporary file (opened read-write by default)."""
@@ -187,6 +198,7 @@
     if os.name == 'posix':
         # Unix -- be very careful
         fd = os.open(name, os.O_RDWR|os.O_CREAT|os.O_EXCL, 0700)
+        _set_cloexec(fd)
         try:
             os.unlink(name)
             return os.fdopen(fd, mode, bufsize)