2014-05-10 1 views
1

커널의 printf 버전에서 컬러로 콘솔에 인쇄 할 수 있습니까? 내가 userland에서 할 수있는 것과 동일한 이스케이프 코드를 볼 수 있습니까? 커널이 termcap 스타일 API와 특정 색상에 대한 상수를 제공 할 수있을만큼 콘솔을 잘 이해하고 있습니까? 그렇다면 어떤 헤더가 정의되어 있습니까?printf (9)의 색상 인쇄

답변

1

커널에서 임의의 이스케이프 시퀀스를 확실히 인쇄 할 수 있습니다. 터미널에있는 모든 바이트를 행복하게 놓을 것입니다. 이러한 바이트가 색상으로 해석되는지, 일반적으로 말하자면 커널은 전혀 모른다.

커널 메시지를 읽으면 (즉, 커널이 XTERM 스타일의 색을 출력하고 직렬 포트를 통해 이러한 프로그램을 사용하는 경우)를 사용하면 동일한 에스 케이프 코드를 볼 수 있습니다 XTERM 또는 XTERM 이스케이프 시퀀스 자체를 에뮬레이트)

커널이 터미널 유형에 대해 많이 알고 있고 termcap 정보를 사용할 수 있는지에 대한 대답은 일반적으로 아니오입니다.

사용자 지역 터미널 유형은 관례입니다. 로그인 스크립트는 연결될 수있는 터미널의 종류를 알아 내려고 쉘의 환경에서 TERM을 적절한 유형으로 설정합니다. fork 된 프로세스는 그것을 상속 받아 특정 터미널에서 특정 작업을 수행하는 방법을 파악하기 위해 해당 유형을 사용합니다. 보통 그것은 일종의 저주 라이브러리를 포함합니다.

커널은 커널 포트가 아니라 직렬 포트, FireWire 또는 비디오 카드와 같은 콘솔의 다른 끝 부분에 실제로는별로 도움이되지 않는 매우 단순한 짐승입니다. 모든 실질적인 목적을 위해 콘솔은 전혀 연결되지 않을 수도 있습니다.

실질적으로 두 가지 문제를 해결해야합니다

  • 사용하려는 특정 TTY 장치에 대한 터미널 유형을 구성하는 방법이있다.
  • 커널에 특정 종류의 termcap/terminfo 데이터와 해당 TTY의 출력을위한 적절한 이스케이프 시퀀스를 생성하는 API를 제공하십시오. 다른 말로하면 - 커널 내 curses 라이브러리.