一个好的应用程序,要提供给开发人员和维护人员一个好用的日志系统;最近在做打印系统模块,把需要的知识点简单记录下;
一、终端百度下终端的概念,可以看到很多解释;我大概的理解就是一个程序的IO控制端口;linux系统原始有7个真正的终端,可以通过ctrl+alt+F1-F7切换,在终端中可以看到linux最初的模样,完全命令行模式的;处理这几个终端外,我们可以新建无数个虚拟终端,来方面使用;例如我们可以在linux的桌面端通过ctrl+alt+t的方式新建无数个终端,特殊的还有ssh终端,串口终端;
我们都知道linux一切皆文件,每有一个终端,都会对应/dev下面的一个文件;例如ssh对应/dev/pts/xx,在桌面新建的终端也是一样的,他们都是在pts文件下,统称为虚拟终端;串口终端比较特殊,他们是在内核编译时,通过编译选项控制的,可以将指定串口配置为终端控制台,对应/dev/ttyxx;
实际上我们做程序得到IO重定向只需要把程序的标准IO重定向到指定终端对应的/dev下的文件就可以了;
二、Console这里说的Console是linux内核log的输出端口的意思;和用户程序一样内核在运行期间也会有一些自己的打印日志输出。默认会输出到/dev/console文件;默认情况下又会重定向到一个串口方便调试;对于console,这里也有几个知识点;
1、可以通过 ioctl(fp,TIOCCONS);将内核打印重定向到fd文件,例如
fp = open("/dev/tty1",O_RDONLY);
ioctl(fp,TIOCCONS); //TIOCCONS 的作用是使成为虚拟控制台
close(fp);
2、分清楚Console和控制台的概念;
ioctl仅改变内核打印的重定向,假如fp指向一个串口,控制台并不会定向到串口;如果需要把默认的串口控制台重定向到另外一个串口,需要内核修改编译选项,重新编译内核;



