터미널/콘솔에 파일형 API를 제공하는 사용 사례

터미널/콘솔에 파일형 API를 제공하는 사용 사례

에서 설명했어요이 스택 오버플로 스레드각 논리 터미널에는 "의사 터미널"이 있고 하나에 쓰기:

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

해당 터미널 창에 데이터가 표시됩니다. 터미널 창에 파일과 유사한 API를 제공하는 이유는 무엇입니까? 이것이 도움이 되는 사용 사례가 있나요?

여기까지그대로 복사했습니다.

의사 터미널에 국한되지 않고 다음을 수행할 수 있습니다./dev/tty*또한.

답변1

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

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

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

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

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

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

관련 정보