一、应用场景:
当我们要调试一台基于linux设备时,如果出现问题,但是没有串口查看信息,这个时候就可以考虑使用telnet登入到设备,并用串口打印信息重定向到telent窗口的方案;
二、源码实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int tty = -1;
char *tty_name = NULL;
if(argc < 2)
{
printf("miss argument\n");
return 0;
}
/* 获取当前tty名称 */
tty_name = ttyname(STDOUT_FILENO);
printf("tty_name: %s\n", tty_name);
if(!strcmp(argv[1], "on"))
{
/* 重定向console到当前tty */
tty = open(tty_name, O_RDONLY | O_WRONLY);
ioctl(tty, TIOCCONS);
perror("ioctl TIOCCONS");
}
else if(!strcmp(argv[1], "off"))
{
/* 恢复console */
tty = open("/dev/console", O_RDONLY | O_WRONLY);
ioctl(tty, TIOCCONS);
perror("ioctl /dev/console");
}
else
{
printf("error argument\n");
return 0;
}
close(tty);
return 0;
}