diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index a9eb38775c42ac..c890b7298d7610 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -2168,13 +2168,15 @@ is_valid_fd(int fd) some platforms. fcntl(fd, F_GETFD) is even faster, because it only checks the process table. + It is preferred over dup() when available, since it cannot fail with the + "too many open files" error (EMFILE). bpo-30225: On macOS Tiger, when stdout is redirected to a pipe and the other side of the pipe is closed, dup(1) succeed, whereas fstat(1, &st) fails with EBADF. FreeBSD has similar issue (bpo-32849). - Only use dup() on platforms where dup() is enough to detect invalid FD in - corner cases: on Linux and Windows (bpo-32849). + Only use dup() on Linux where dup() is enough to detect invalid FD + (bpo-32849). */ if (fd < 0) { return 0;