A man page do Linux e a descrição do POSIX dizem claramente que ela é, na verdade, atômica:
página man do Linux em dup2()
:
The steps of closing and reusing the file descriptor
newfd
are performed atomically.
On the other hand, the dup2() function provides unique services, as no other interface is able to atomically replace an existing file descriptor.
Eu não vejo nenhum motivo para ser atômico em relação à abertura, fechamento e desduplicação do descritor de arquivo, mas não em relação a leituras ou gravações.