转至 https://blog.csdn.net/wuquan_1230/article/details/105782687

概述

在嵌入式Linux系统中,有时通过远程(telnet或者ssh)登录到现场设备,想看程序的实时打印的调试信息,需要将输出到串口的调试信息重定向到当前登录的终端界面上。

也可以将程序重新启动到当前终端界面,但是在程序出现问题时,如果重启程序,可能会破坏了问题现场,再查找问题就不好查找了。

下面是实现的代码,可以将输出到串口的日志信息,重定向到当前的telnet或者ssh界面上,是不是很神奇!
实现代码

#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 TIOCCONS");}else{printf("error argument\n");return 0;}close(tty);return 0;
}

嵌入式串口打印信息重定向到当前终端界面相关推荐

  1. 具备过滤串口打印信息的串口工具SerialTools

    纯属找乐,不用勿喷.......免费下载,下载方式在最后! 设计初衷: 做嵌入式硬件同事应该都遇到过查看设备串口打印信息,有时打印的内容太多,总是找不到自己关注的log,因此花了一下午设计了这个简单的 ...

  2. STC15单片机-串口打印printf重定向

    printf函数重定向为往串口打印信息 在UART.h.UART1.h和UART.c文件的内容编写好后,在main函数中实现通过串口发送一串字符串和一个不断加1的变量 方法一: 使用sprintf函数 ...

  3. 读芯片信息出错3_十分钟看懂串口打印信息(1)

    一.软件串口打印信息加载流程 不管何种机芯方案,在上电开机后,软件 总会初始化复位和加载相关内容和应用,这部 分的信息通常我们采用串口工具来进行读写的 操作. 针对我们工作的需求和作为问题处理的可 靠 ...

  4. Linux串口输出启动信息,linux开发板启动过程串口打印信息

    满意答案 板子软件分三部分: 1.uboot (负责初始化基本硬件,如串口,网卡,usb口等,然后引导系统运行) 2.linux系统 (真正的操作系统) 3.你的应用程序 (基于操作系统的软件应用) ...

  5. openwrt关闭串口打印信息

    mt7620n仅有一个串口 由于开发板只有一个UART lite接口,在原生的OpenWrt中作为了内核打印和tty控制台所用. 而在很多情况下,需要使用串口与外部芯片进行通讯,这时就需要从OpenW ...

  6. 泰凌微 Telink TLSR825X Printf gpio 模拟 串口 打印信息 log

    如题: 使用telink可以使用printf功能,之前我不了解,我一度以为这是uart 实现的printf 在配置的时候,居然配置 uart 对应的gpio接口,后面这个问题坑了一段时间. 其实pri ...

  7. Linux串口打印信息工具,基于Qt实现Linux或Windows串口打印工具

    一.运行结果 二.实现过程 1.打开串口 首先我们需要创建一个QSerialPort对象,然后调用它的open函数打开串口设备,然后再调用它的bool setBaudRate(qint32 baudR ...

  8. 服务器查看串口打印信息,串口打印服务器如何设置打印机

    串口打印服务器如何设置打印机 内容精选 换一换 本节介绍如何基于迁移好的TensorFlow训练脚本,在裸机环境的多个Device上执行训练.使用前须知:一个Device对应执行一个训练进程,当前不支 ...

  9. rk3328 android10 Debug串口打印信息

    1.原理图如下: 2.kernel dts修改如下: diff --git a/arch/arm64/boot/dts/rockchip/rk3328-evb-android.dtsi b/arch/ ...

最新文章

  1. List元素互换,List元素转换下标,Java Collections.swap()方法实例解析
  2. 当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮
  3. Py之smtplib:smtplib(aiosmtplib)的简介、安装、使用方法之详细攻略
  4. 【计算机网络】Session机制
  5. NIO 之 ByteBuffer实现原理
  6. flume高可用-failover-模型分析
  7. @Scheduled执行阻塞解决办法
  8. python计算绩效工资_python实现 --工资管理系统
  9. (46)System Verilog 类中变量随机激励权重分布
  10. 摘得“2019最佳智能手机”大奖的华为P30系列究竟比iPhone XS系列强在哪
  11. Python工作笔记001---python3的print加括号_Python3中不存在raw_input( )了
  12. Database2Sharp之混合型Winform框架代码生成
  13. 阶乘与 pi 的关系 —— 斯特林公式(Stirling formula)
  14. Caffe环境搭建指北
  15. 野火stm32f103的mcuisp设置与一键ISP下载原理分析总结
  16. Unity中内嵌网页插件 UniWebView 2.8使用
  17. 合成孔径雷达(微波遥感)的应用
  18. 阿里云 银行卡 信息 四要素 验证
  19. ZXing设置前置摄像头扫描
  20. 到底cms企业建站系统是什么?为什么要做cms系统?

热门文章

  1. sas java 虚拟机异常_深入理解JAVA虚拟机之异常诊断
  2. android listview 自适应列宽_Android 开发技术周报 Issue#272
  3. Mac在命令行中打开Finder
  4. 多选题spss相关分析_【医学问卷分析】使用SPSS多重响应对医学问卷多选题进行统计分析——【杏花开医学统计】...
  5. vant在cell中加表格_Vant Cell 单元格
  6. python程序是怎么构成的_python程序的构成
  7. 一年级下册数学计算机应用题,一年级数学下册期中检测试题
  8. 深度学习之正则化方法
  9. 医保费用监控指标体系建立(九)其他专项分析
  10. 计算机视觉开源代码集合(转载)