Issue 32862: os.dup2(fd, fd, inheritable=False) behaves inconsistently
os.dup2(fd, fd, inheritable=False) may fail or change fd inheritability in following ways: 1) POSIX without F_DUP2FD_CLOEXEC 1.1) dup3() is available (a common case for Linux): OSError (EINVAL, dup3() doesn't allow equal descriptors) 1.2) dup3() is not available: fd made non-inheritable 2) POSIX with F_DUP2FD_CLOEXEC (FreeBSD): inheritability is not changed 3) Windows: fd made non-inheritable In contrast, os.dup2(fd, fd, inheritable=True) never changes fd inheritability (same as before PEP 446 landed). I suggest to make os.dup2(fd, fd, inheritable=False) behave the same.