정의
이 문서에서는 이 공간에서 특정 단어와 구의 정의를 제공하며 이 문서 집합 전체에서 참조로 사용됩니다.
명령줄 애플리케이션
명령줄 애플리케이션 또는 콘솔 하위 시스템의 "클라이언트" 또는 "클라이언트"라고도 하는 명령줄 애플리케이션은 텍스트 또는 문자 정보 스트림에서 기본 작동합니다. 일반적으로 자체 사용자 인터페이스 요소를 포함하지 않으며 출력/디스플레이 및 입력/상호 작용 역할을 호스팅 애플리케이션에 위임합니다. 명령줄 애플리케이션은 사용자의 키보드 입력을 나타내는 표준 입력 STDIN
핸들에서 텍스트 스트림을 수신하고, 해당 정보를 처리한 다음, 표준 출력 STDOUT
의 텍스트 스트림으로 응답하여 사용자의 모니터에 다시 표시합니다. 물론 이는 추가 입력 디바이스 및 원격 시나리오에 대해 시간이 지남에 따라 발전해 왔지만 명령줄 클라이언트가 텍스트에서 작동하고 다른 사람이 표시/입력을 관리하는 것과 동일한 기본 철학이 기본.
표준 핸들
표준 핸들은 시작 시 프로세스 공간의 일부로 도입된 일련의 STDIN
STDOUT
핸들입니다STDERR
. 이는 도중에 정보를 수락하고 나가는 길에 다시 보낼 수 있는 장소를 나타냅니다(오류를 보고하는 특별한 장소 포함). 명령줄 애플리케이션의 경우 애플리케이션이 시작될 때 항상 존재해야 합니다. 부모로부터 자동으로 상속되거나, 부모에 의해 명시적으로 설정되거나, 지정/허용되지 않는 경우 운영 체제에서 자동으로 생성됩니다. 클래식 Windows 애플리케이션의 경우 시작 시 비어 있을 수 있습니다. 그러나 애플리케이션 자체에 의해 런타임 중에 부모 또는 할당, 연결 및 해제에서 암시적 또는 명시적으로 상속될 수 있습니다.
표준 핸들은 특정 유형의 연결된 디바이스를 의미하지 않습니다. 그러나 명령줄 애플리케이션의 경우 디바이스는 가장 일반적으로 콘솔 디바이스, 파일(셸의 리디렉션에서) 또는 파이프(한 유틸리티의 출력을 다음 유틸리티의 입력에 연결하는 셸에서)입니다. 소켓 또는 다른 유형의 디바이스일 수도 있습니다.
TTY/PTY
비 Windows 플랫폼에서 TTY 및 PTY 디바이스는 각각 Windows 콘솔 세션과 동일한 개념인 실제 디바이스 또는 소프트웨어에서 만든 의사 디바이스를 나타냅니다. 명령줄 클라이언트 애플리케이션과 서버 호스트 대화형 작업 애플리케이션 또는 물리적 키보드/디스플레이 디바이스 간의 통신이 텍스트 기반 정보를 교환할 수 있는 채널입니다.
클라이언트 및 서버
이 공간에서는 "클라이언트"를 정보 처리 및 명령 실행 작업을 수행하는 애플리케이션으로 지칭합니다. "서버" 애플리케이션은 사용자 인터페이스를 담당하며 클라이언트를 대신하여 입력 및 출력을 표준 양식으로 변환하는 작업자입니다.
콘솔 하위 시스템
콘솔 및 명령줄 작업에 영향을 주는 모든 모듈을 나타내는 catch-all 용어입니다. 특히 시작 애플리케이션이 명령줄/콘솔 애플리케이션인지(그리고 시작할 표준 핸들이 있어야 하는지) 또는 Windows 애플리케이션(필요하지 않음)인지를 지정하는 이식 가능한 실행 파일 헤더의 일부인 플래그를 나타냅니다.
콘솔 호스트, 명령줄 클라이언트 애플리케이션, 콘솔 드라이버, 콘솔 API 표면, 의사 콘솔 인프라, 터미널, 구성 속성 시트, 프로세스 로더 내의 메커니즘 및 스텁 및 이러한 애플리케이션의 작동과 관련된 모든 유틸리티는 이 그룹에 속하는 것으로 간주됩니다.
콘솔 호스트
Windows 콘솔 호스트 또는 conhost.exe
명령줄 애플리케이션을 사용하기 위한 클래식 Windows 사용자 인터페이스뿐만 아니라 모든 Windows 콘솔 API에 대한 서버 애플리케이션입니다. 이 이진 파일의 전체 콘텐츠인 API 서버와 UI는 지금까지 중요한 시스템 프로세스인 Windows csrss.exe
에 속했으며 보안 및 격리를 위해 분리되었습니다. 앞으로 conhost.exe
는 API 호출 서비스 및 번역을 계속 담당하지만 사용자 인터페이스 구성 요소는 의사 구성 요소를 통해 터미널에 위임됩니다.
의사콘솔
이는 다른 플랫폼의 의사 또는 "PTY"의 Windows 시뮬레이션입니다. 텍스트 기반 통신의 간단한 양방향 채널을 제공하는 PTY의 일반적인 인터페이스 철학과 일치시키려고 시도하지만, 이 디자인 철학이 클래식 콘솔 API 표면에서 간단한 텍스트 채널 통신 양식으로 변경되기 전에 작성된 Windows 애플리케이션의 폭을 변환하기 위해 Windows에서 큰 호환성 계층으로 보완합니다. 터미널은 pseudoconsole을 사용하여 사용자 인터페이스 요소의 소유권을 콘솔 호스트에서 벗어나게 하고 API conhost.exe
서비스, 번역 및 호환성 작업을 담당할 수 있습니다.
터미널
터미널은 명령줄 애플리케이션에 대한 사용자 인터페이스 및 상호 작용 모듈입니다. 현재는 디스플레이 모니터, 키보드 및 양방향 직렬 통신 채널이 있는 물리적 디바이스였던 것을 소프트웨어로 표현하고 있습니다. 다양한 형식으로 사용자로부터 입력을 수집하고, 변환하고, 인코딩하고, 특수 명령 정보를 단일 텍스트 스트림으로 인코딩하고, 명령줄 클라이언트 애플리케이션의 채널로 전송하기 STDIN
위해 PTY에 제출하는 작업을 담당합니다. 또한 클라이언트 애플리케이션의 채널에서 제공된 PTY를 통해 정보를 다시 받고, 페이로드의 STDOUT
특수 정보를 디코딩하고, 모든 텍스트와 추가 명령을 배치하고, 최종 사용자에게 그래픽으로 표시합니다.