[Python-Dev] PEP 446: Open issues/questions (original) (raw)
Charles-François Natali cf.natali at gmail.com
Fri Aug 2 08:44:37 CEST 2013
- Previous message: [Python-Dev] PEP 446: Open issues/questions
- Next message: [Python-Dev] PEP 446: Open issues/questions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
2013/8/2 Victor Stinner <victor.stinner at gmail.com>:
On Windows, inheritable handles (including open files) are still inherited when a standard stream is overriden in the subprocess module (default value of closefds is set to False in this case). This issue cannot be solved (at least, I don't see how): it is a limitation of Windows. bInheritedHandles must be set to FALSE (inherit all inheritable handles) when handles of standard streams are specified in the startup information of CreateProcess().
Then how about changing the default to creating file descriptors unheritable on Windows (which is apparently the default)? Then you can implement keep_fds by setting them inheritable right before creation, and resetting them right after: sure there's a race in a multi-threaded program, but AFAICT that's already the case right now, and Windows API doesn't leave us any other choice. Amusingly, they address this case by recommending putting process creation in a critical section: http://support.microsoft.com/kb/315939/en-us
This way, we keep default platform behavior on Unix and on Windows (so user using low-level syscalls/APIs won't be surprised), and we have a clean way to selectively inherit FD in child processes through subprocess.
cf
- Previous message: [Python-Dev] PEP 446: Open issues/questions
- Next message: [Python-Dev] PEP 446: Open issues/questions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]