从printf(9)彩色印刷



是否可以从内核版本的printf打印到控制台?我能在用户区看到同样的转义码吗?内核是否能够很好地理解控制台,从而能够为特定颜色提供termcap风格的api和常量?如果是,它们在哪个头文件中定义?

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

因此,一旦你读取内核消息(例如,如果内核打印出XTERM风格的颜色,而你碰巧通过串口用一个使用XTERM或模拟XTERM转义序列本身的终端程序来查看它们),你可以打印并看到相同的转义代码

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

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

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

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

  • 为你想使用的TTY设备配置终端类型。
  • 为内核提供某种终端类型的termcap/terminfo数据,以及为特定TTY上的输出生成适当转义序列的API。换句话说——内核中的诅咒库。

最新更新