파일에서 파일 설명자의 연결을 어떻게 끊을 수 있나요?

파일에서 파일 설명자의 연결을 어떻게 끊을 수 있나요?

Bash에서는 파일 설명자와 파일 사이의 연결을 만들 수 있습니다. 예를 들면 다음과 같습니다.

exec > /path/to/myfile

fd 1을 파일에 연결합니다.

fd가 어떤 파일에도 연결되지 않도록 연결된 모든 파일에서 fd의 연결을 끊는 방법을 알고 싶습니다. 및 파일 /dev/null입니다 /dev/tty.

감사해요.

내 목적은 알아내는 거야쉘은 파일 설명자 0, 1, 2를 제어 터미널에 자동으로 연결합니까?bash, 동일한 bash 쉘에서 실행하기 전에 bash에서 fd 0, 1 및 2의 연결을 끊으십시오.

답변1

원하는 것은 >&-(기본 fd 1) 또는 <&-(기본 fd 0) 연산자를 사용하여 Bourne과 같은 쉘에서 수행되는 파일 설명자를 닫는 것입니다.

exec >&-
exec 1>&-
exec 1<&-

동일하며 close(1)시스템 호출이 발생합니다.

파일 설명자 0, 1, 2를 닫는 것은 일반적으로 좋지 않은 생각입니다. 대부분의 명령은 이러한 파일 설명자가 열려 있을 것으로 예상하고(이것은 stdin, stdout 및 stderr입니다), 파일을 열면 파일이 열릴 수 있기 때문입니다. 의도치 않게 stdin/stdout/stderr가 되어 stdout이나 stderr에 인쇄하는 모든 내용이 결국 이 파일에 기록될 수 있습니다.

관련 정보