Hi,

The PEP 433 proposes different options to add a new cloexec parameter:

 a) cloexec=False by default
 b) cloexec=True by default
 c) configurable default value

I tried to list in the PEP 433 advantages and drawbacks of each option.

If I recorded correctly opinions, the different options have the
following supporters:

 a) cloexec=False by default
 b) cloexec=True by default: Charles-François Natali
 c) configurable default value: Antoine Pitrou, Nick Coghlan, Guido van Rossum

I don't know if it's enough to say that (c) is the chosen option.

--

For the name of the new parameter, I still prefer "cloexec" for the
reason given by Antoine: on UNIX, the flag has only an effect on
exec(), not on fork(). So inherited=False can be misleading on UNIX.

I updated the rationale of the PEP to describe the close-on-exec flag:
http://www.python.org/dev/peps/pep-0433/#rationale

--

FYI on Windows, cloexec=False (inherited=True) doesn't mean that the
file descriptor will be inherited. It also depends on the
bInheritHandles parameter of the CreateProcess() function. Extract of
the PEP:

"On Windows, the file descriptor is not inherited if the close-on-exec
flag is set, the file descriptor is inherited by child processes if
the flag is cleared and if CreateProcess() is called with the
bInheritHandles parameter set to TRUE (when subprocess.Popen is
created with close_fds=False for example)."

Victor
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to