概述
代码里关于打印的printf,都是默认定向到/dev/console处的,而用telnet调试问题时,通常是在telnet输入脚本命令,随之会回显关于这个命令的执行情况。除此之外,没有多的打印内容了。
telnet对于串口来讲,会少了很多应用进程的打印,不利于调试问题。
实现
方式一 脚本命令实现
查询目前终端的tty节点是哪个,比如想查询telnet的,那就在telnet的终端输入
~ # tty
/dev/pts/0
重定向打印到telnet,我这里查询的telnet id是/dev/pts/0
~ # setconsole /dev/pts/0
这样打印内容就都会在telnet上输出,此时再接串口,是无法在串口处输入命令的。
方式二 C语言实现
/* 重定向console到当前tty */
char *tty_name = NULL;
tty_name = ttyname(STDOUT_FILENO);
tty = open(tty_name, O_RDONLY | O_WRONLY);
ioctl(tty, TIOCCONS);
perror("ioctl TIOCCONS")
/* 恢复默认console */
tty = open("/dev/console", O_RDONLY | O_WRONLY);
ioctl(tty, TIOCCONS);
perror("ioctl TIOCCONS");
方式三
tty_name = "/dev/pts/0"
sprintf(szBuf, "echo \"****************************\" > %s",tty_name);
system(szBuf);