터미널/콘솔에 파일 API와 유사한 사용 사례 제공

터미널/콘솔에 파일 API와 유사한 사용 사례 제공

에 설명되어 있습니다이 스택 오버플로 스레드각 논리 터미널에는 "의사 터미널"이 있으며 그 중 하나에 쓰기:

$ cat some-file.txt > /dev/ttys002

해당 터미널 창에 데이터가 표시됩니다. 터미널 창에 파일같은 API를 제공하는 이유는 무엇인가요? 이에 대한 유용한 사용 사례가 있습니까?

여기로그대로 복사합니다.

의사 터미널에 국한되지 않고 다음 용도로도 사용할 수 있습니다./dev/tty*게다가.

답변1

대부분의 하드웨어 장치는 파일과 유사한 API를 제공합니다. 이는 운영 체제 설계와 애플리케이션 설계를 더 단순하게 만들기 때문에 수행됩니다. 운영체제는 파일 API만 있으면 되며, 별도의 터미널 API, 별도의 디스크 API, 별도의 사운드 API 등이 필요하지 않습니다. 특정 유형의 하드웨어에 특정한 기능을 사용하지 않는 응용 프로그램은 일반 파일에 액세스하는지 하드웨어 장치에 액세스하는지 여부에 관계없이 파일 API를 사용할 수 있습니다.

많은 하드웨어에는 특정 장치 유형에 특정한 기능이 있습니다. 애플리케이션은 다음을 통해 이러한 함수를 호출할 수 있습니다.I/W 제어. 일부 하드웨어는 단순히 바이트 스트림을 읽거나 쓸 수 없기 때문에 파일로 표시되지 않습니다. 예를 들어, Linux는 네트워크 인터페이스가 개별 바이트가 아닌 패킷에서 작동하기 때문에 네트워크 인터페이스를 장치 파일로 노출하지 않습니다.

역사적으로 터미널은 하드웨어 장치였습니다. 오늘날 대부분의 터미널은 그래픽 환경이나 네트워크를 통해 에뮬레이터를 통해 제공됩니다. 그럼에도 불구하고 커널에는 어떤 프로세스가 어떤 터미널에서 실행되고 있는지 추적하는 특수 처리 기능이 포함되어 있기 때문에 의사 터미널도 하드웨어 장치처럼 보입니다.

모든 Unix 변종에서는/dev/tty"이 프로세스의 현재 터미널"을 의미합니다. 즉, 프로세스가 파일을 열 때마다 해당 프로세스의제어 터미널). 이를 통해 표준 입력 및 출력 설명자가 리디렉션된 경우에도 프로세스가 터미널을 통해 상호 작용할 수 있습니다.

각 터미널에는 하드웨어 터미널(예: /dev/tty1Linux /dev/tty2의 텍스트 모드 가상 콘솔의 경우 , , ... 또는 /dev/ttyS0Linux의 직렬 포트의 경우 , ...) 또는 시뮬레이션된 터미널(예: tty)일 수 있는 관련 장치 파일이 있습니다. pty, pseudo의 약어) - /dev/pts/NUMBER프로세스가 터미널 드라이버 또는 에뮬레이터와 데이터를 교환하는 데 사용되는 Linux의 터미널입니다.

터미널은 애플리케이션을 실행하고 그 출력을 터미널에 표시할 수 있는 파일이기 때문입니다. 명령줄에서 프로그램을 실행하면 해당 출력이 기본적으로 터미널로 전송되지만 이를 파일로 리디렉션할 수 있습니다.

관련 정보