On Mon, 29 Jul 2013 23:42:36 +0200 Victor Stinner <victor.stin...@gmail.com> wrote: > > >> So perhaps only the *original* standard streams should be left > >> inheritable? > > I plan to only change functions *creating* (and replacing) new file > descriptors. Existing file descriptors (like 0, 1, 2) are unchanged.
You can create fds 0, 1 and 2 if they were closed before. > > Having stdin/stdout/stderr cloexec (e.g. after a dup() to redirect to > > a log file, a socket...) will likely break a lot of code, e.g. code > > using os.system(), or code calling exec manually (and I'm sure there's > > a bunch of it). > > I propose to add just one special case os.dup2(fd, fd2): if fd2 < 3, > fd2 is set to inheritable (otherwise, fd2 is set to non-inheritable). > os.dup2() is commonly used to replace stdin, stdout and stderr between > fork and exec. The http.server (cgi server) and pty modules use dup2() > for example Mmh. Doing it only in dup2() sounds like too much special casing for me. I would prefer adding a new explicit parameter: os.dup2(fd, fd2, inheritable=False) (as a bonus, it can be implemented using dup3() under (GNU/)Linux) Regards Antoine. _______________________________________________ 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