Por que não consigo fazer ls -a 1 & -?

6

Por que não podemos fechar stdout para um processo?

Eu estava testando os comandos de redirecionamento. Os seguintes trabalhos:

ls -a 0>&-
ls -a 2>&-

que significa fechar stdin e stderr para o processo ls -a . Mas por que o fechamento de stdout falha? Estou recebendo

aniket@aniket-Compaq-610:~/Downloads$ ls -a 1>&-
ls: write error: Bad file descriptor

Eu sei que não faz sentido fechar o stdout aqui, mas estou me perguntando por que isso não é permitido?

    
por Aniket Thakur 15.10.2016 / 20:38

1 resposta

24

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.

    
por 15.10.2016 / 20:56