Nadeem Vawda <nadeem.va...@gmail.com> added the comment: > For what its worth, an strace of Java's Process class appears to "cheat" by > opening /proc/self/fd inbetween fork & exec.
Looking at the OpenJDK source confirms this: http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/tip/src/solaris/native/java/lang/UNIXProcess_md.c I wonder whether the Java people are simply unaware of the potential problem? Or perhaps they have checked the Linux and Solaris implementations of readdir() and confirmed that it is in fact safe on those platforms. Even if this is the case, I would be wary of doing things the same way - there's no guarantee that the implementation won't change out from underneath us. I like the approach suggested by Gregory in issue11284 (msg129912) - if we are sure the program is not multithreaded, get the list of fds before forking, and use that; otherwise, do it the slow way. On Linux, the multithreading check could be implemented by checking the number of subdirectories in /proc/<pid>/task/. I don't know if *BSD (or other Unices) have a similar way to do this. Some quick Googling seems to indicate that FreeBSD, at least, doesn't make this information available through the procfs (which is apparently deprecated anyway). Could someone with wider *nix knowledge chip in here? ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue8052> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com