Colors 打印F(9)中的彩色打印

Colors 打印F(9)中的彩色打印,colors,console,freebsd,Colors,Console,Freebsd,是否可以从内核版本的printf以彩色打印到控制台?我可以在userland中看到相同的转义码吗?内核是否充分理解控制台,能够为特定颜色提供termcap样式的API和常量?如果是这样,它们在哪个头中定义?您当然可以从内核打印任意转义序列。它会很高兴地把任何字节放在终端上。一般来说,内核不知道这些字节是否会被解释为颜色 因此,一旦读取内核消息,就可以打印并看到相同的转义码(即,如果内核打印XTERM样式的颜色,并且您碰巧通过使用XTERM或模拟XTERM转义序列本身的终端程序的串行端口查看它们)

是否可以从内核版本的printf以彩色打印到控制台?我可以在userland中看到相同的转义码吗?内核是否充分理解控制台,能够为特定颜色提供termcap样式的API和常量?如果是这样,它们在哪个头中定义?

您当然可以从内核打印任意转义序列。它会很高兴地把任何字节放在终端上。一般来说,内核不知道这些字节是否会被解释为颜色

因此,一旦读取内核消息,就可以打印并看到相同的转义码(即,如果内核打印XTERM样式的颜色,并且您碰巧通过使用XTERM或模拟XTERM转义序列本身的终端程序的串行端口查看它们)

至于内核是否了解您的终端类型并能够使用termcap信息,答案通常是否定的

在userland中,终端类型是惯例问题。登录脚本尝试找出您可能连接到的终端类型,然后在shell环境中将TERM设置为适当的类型。分叉进程继承它并使用该类型,以确定如何在特定终端上执行某些操作。通常它涉及到某种诅咒库

另一方面,内核是一个相当简约的野兽,它并不真正关心它的控制台的另一端——串口、火线或视频卡。出于所有实际目的,控制台甚至可能根本无法连接到任何东西

实际上,您需要解决两个问题:

  • 有一种方法可以为要使用的特定TTY设备配置终端类型
  • 为内核提供该终端类型的som类termcap/terminfo数据和API,以便为特定TTY上的输出生成适当的转义序列。换句话说——在内核诅咒库中