Obviamente, o fechamento do stdout não falha, pelo contrário, é bem-sucedido porque a gravação nele falha, como pode ser visto na mensagem de erro. Edit: para esclarecer a minha resposta, o que acontece é que você primeiro diz ao shell para fechar o descritor de arquivo, então o programa ls
tenta gravar nele. É daí que vem a mensagem de erro.