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

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

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

exec > /path/to/myfile

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

fd가 어떤 파일에도 연결되지 않도록 연결된 모든 파일에서 fd의 연결을 끊을 수 있는 방법이 궁금합니다. 및 파일 /dev/null입니다 /dev/tty.

감사해요.

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

답변1

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

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

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

파일 설명자 0, 1, 2를 닫는 것은 일반적으로 좋지 않은 생각입니다. 대부분의 명령에서는 해당 파일 설명자가 열려 있을 것으로 예상하고(stdin, stdout 및 stderr), 파일을 열면 해당 파일이 실수로 stdin/이 될 수 있습니다. stdout/stderr 및 stdout이나 stderr에 인쇄하는 내용은 결국 해당 파일에 기록될 수 있습니다.

관련 정보