get_current_tty 使用
在开发内核驱动时,可以使用 get_current_tty
接口获取当前所在的终端,将日志打印到当前终端窗口中。比如,如果我们是通过 SSH 连接到 SSH 服务器上,通过 printk
等内核打印方式打印的日志内容会存储到系统日志中,通过 dmesg
可以查看,不会像用户态程序中库函数 printf
一般将结果打印到当前终端窗口中。此时可以使用 get_current_tty
这一接口获取当前终端,将消息打印到当前终端窗口中。
使用方式如下:
/* #include <linux/tty.h> */
static struct tty_struct *tty;
unsigned char *newLine = "\r\n";
unsigned char *errInfo = "Error: a test error.\r\n";
tty = get_current_tty();
if (tty) {
(tty->driver->ops->write)(tty, newLine, strlen(newLine));
(tty->driver->ops->write)(tty, errInfo, strlen(errInfo));
} else {
printk(KERN_ERR "Get current tty failed\n");
}
需要注意的是,能够使用这个方式打印消息的前提是,驱动进程是由当前终端窗口发起的。如果驱动中使用了工作队列,比如延迟十毫秒启动一个工作线程,那么在这样的线程中调用这个接口将不能够将信息打印到当前控制台上。原因在于,工作队列启动的线程不是由当前终端创建,而是由内核调度创造。
标签:tty,get,打印,current,终端,当前 From: https://www.cnblogs.com/arvin-blog/p/18330378