ls -a 1>&-를 실행할 수 없는 이유는 무엇입니까?

ls -a 1>&-를 실행할 수 없는 이유는 무엇입니까?

stdout왜 프로세스를 종료할 수 없나요 ?

명령을 리디렉션하려고 합니다. 다음은 작동합니다:

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

이는 폐쇄 stdinstderr처리를 의미합니다 ls -a. 그런데 왜 종료가 stdout실패합니까? 나는 들어가고있다 (상태

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

여기서 stdout을 끄는 것이 의미가 없다는 것을 알고 있지만 왜 이것이 허용되지 않는지 궁금합니다.

답변1

분명히 stdout을 닫는 것은 실패하지 않았지만, 오류 메시지에서 볼 수 있듯이 쓰기에 실패했기 때문에 성공했습니다. 편집: 내 대답을 명확히 하기 위해 쉘은 먼저 파일 설명자를 닫으라는 지시를 받은 다음 프로그램이 파일 설명 ls자를 쓰려고 시도합니다. 여기서 오류 메시지가 발생합니다.

관련 정보