> Wow. Indeed you can -- I just tested this myself. How is this > accomplished? I guess the CRT has a backchannel to talk to itself when > it creates a process using spawn*?
CreateProcess() takes a STARTUPINFO argument with undocumented fields cbReserved2, lpReserved2. They are used to pass an array of fds.
> But I'm also ready to propose that all this is such a mess that we
*should* change the default fd/handle inheritance to False, *across platforms*, and damn the torpedoes -- i.e. accept breaking all existing 3rd party UNIX code for subprocess creation that bypasses the subprocess module, as well as breaking uses of os.spawn*() on both platforms that depend on FD inheritance beyond stdin/stdout/stderr).
+1
We can fix multiprocessing any anything else in the stdlib that this breaks, I presume.
In the experimental branch of multiprocessing, child processes no longer inherit unnecessary handles.
-- Richard _______________________________________________ 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