文件IO@Linux

如何将嵌入式串口打印信息重定向telnet/ssh界面 文章目录概述实现代码编译运行 概述 在嵌入式Linux系统中,有时通过远程(telnet或者ssh)登录到现场设备,想看程序的实时打印的调试信息,需要将输出到串口的调试信息重定向到当前登录的终端界面上。 也可以将程序重新启动到当前终端界面,但是在程序出现问题时,如果重启程序,可能会破坏了问题现场,再查找问题就不好查找了。 下面是实现的代码,可以将输出到串口的日志信息,重定向到当前的telnet或者... 阅读详情

简述

Linux下的所有资源都被抽象为文件,所以对所有资源的访问都是以设备文件的形式访问,设备文件的操作主要包括:打开、关闭、读、写、控制、修改属性等。下面的示例代码主要是对文本文件的拷贝。

其实对于一些复杂一点的设备,主要操作也是类似,比如摄像头,在linux下也是一个设备文件,打开之后,可以读取摄像头的参数,然后可以读取图像数据,读取到的图像数据可以编码后保存到文件中,这就是录像的过程,也可以把读到的图像数据送到LCD显示屏的帧缓存去显示出来。

再比如串口的操作,在Linux下,对于串口通信,也是设备文件的读写操作:打开设备文件—>配置参数(波特率、停止位、校验位等)—>读取/写入数据。

代码

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>


#define M 128

int 
main(int argc, char **argv)
{
    if(argc < 3){
        printf("Usage:%s,<file1>,<file2>\n",argv[0]);
        return -1;
    }

    int fd1,fd2;
    char buf[M];
    int count = -1;

    memset(buf, '\0', M);
    if((fd1 = open(argv[1],O_RDONLY)) == -1){
        perror("open file1 error:");
        return -1;
    }
    if((fd2 = open(argv[2],O_RDWR | O_CREAT,0644)) == -1){
        perror("open file2 error:");
        return -1;
    }
	
    while(count != 0){
        if((count = read(fd1,buf,M)) == -1){
            perror("read file1 error:");
            return -1;
        }

        if((count = write(fd2,buf,count)) == -1){
            perror("write error:");
            return -1;
        }
    }
    close(fd1);
    close(fd2);
    return 0;
}

编译运行

gcc copy.c -o copy

./copy copy test
$ ls
copy  copy.c  test

$ diff copy test  
$

运行结果,程序对其自身拷贝了一份为test的文件,用diff命令比较两个文件,没有差异,完全一样,说明拷贝成功了。

微信公众号:

在这里插入图片描述

Qt实现的TCP端口转发工具 使用Qt实现了一个Tcp端口转发的工具,实现功能具体如下: 本地启动一个服务,接收远端客户端的连接。同时也会连接另一个服务器,会将 接收到客户端的数据,转发到连接的服务器上面。 通过该工具的编码,也正好练习了一下Qt的socket编程(服务器/客户端),是个 不错的例子,欢迎大家来Emil索取源码,共同学习! Emil:wuquan-1230@163.com 立即下载

相关推荐

【关于四足机器人那些事】足端轨迹规划-八次多项式轨迹

系列文章目录 文章目录系列文章目录前言一、多项式曲线二、八次多项式曲线总结 前言 在四足机器人的研究中,有一个很关键的问题,就是如何减少足端在触地瞬间的冲击,避免把机器人把自己给蹬倒了?这时候就需要一个合理的足端轨迹规划。本篇将会介绍几种足端轨迹。 本文将对四足机器人的足端轨迹进行规划。将数学中的复合摆线和多项式曲线引入到足端轨迹的规划中,根据零冲击原则[2],规划出 3 条满足要求的足端轨迹,包括: 复合摆线轨迹 八次多项式轨迹 分段五次多项式轨迹 本篇先介绍 - 八次多项式轨迹 一、多项式曲

LiuZ的博客 2955

C语言Log工具推荐-easylogger

文章目录日志简述EasyLogger简介编译运行附录EasyLogger说明1. 介绍1.1 主要特性1.2 插件1.3 Star & Fork2. 使用2.1 参数配置2.2 输出级别2.2.1 输出缤纷多彩的日志2.3 输出过滤2.4 输出格式2.5 输出方式2.6 Demo2.6.1 核心功能2.6.2 Flash Log(将日志保存到 Flash 中)2.6.2 File Log(将日志保存到文件中)3. 文档4. 后期5. 许可 日志简述 C/CPP的日志工具也很多,在之前的项目中用过的有

风声的专栏 3930

运放+三极管构建LED恒流驱动电路:原理、设计与调试全解析

在电子工程领域,恒流源是一种能够提供稳定输出电流的电路,其核心原理基于负反馈控制机制。通过将输出电流采样转化为电压信号,并与一个稳定的参考电压进行比较,系统自动调节功率器件的导通状态,从而抵消输入电压波动或负载变化带来的影响,实现电流恒定。这种技术对于驱动LED、激光二极管等电流敏感型器件具有重要价值,能确保亮度、色温的一致性,并延长器件寿命。本文以经典的运放结合三极管方案为例,深入剖析其如何实现精准的电流“钳位”。该方案利用通用运算放大器作为比较器,配合三极管构成调整管,通过采样电阻实时监测电流,形成了一

weixin_42525800的博客 492

基于Qt实现的TCP端口数据转发服务器

对于Qt,比较喜欢qt的sdk框架,我也是用于做一些工作中用到的工具软件,基于qt的sdk做起来也比较快; 一、概述 今天要说的这个tcp端口转发服务器,主要是用于将监听端口的数据转发到另外一个服务器的端口上,这个工具软件的作用有以下几点: 1.监视协议交互数据,一方面是数据内容,另一个方面是协议交互(服务端到底有没有应答数据,客户端的数据有没有发出来) 2.网络代理;客户...

风声的专栏 5066

华为海思2026届数字IC秋招笔试真题解析与实战技巧(2025最新版)

本文深度解析华为海思2026届数字IC秋招笔试真题,涵盖高频考点如后端设计、低功耗设计、SystemVerilog语法等核心内容。提供时序违例修复、时钟树综合等实战技巧,帮助考生高效备考。特别关注UPF低功耗设计规范等最新考点,助力考生在秋招笔试中脱颖而出。

lg888的博客 1088

电磁兼容(EMC):一文读懂过电应力(EOS)

过电应力(EOS)是指元器件承受的电流或电压应力超过其允许的最大范围。产品的电磁兼容(EMC)失效的一种常见模型为过电应力(EOS),也是电子产品失效的最常见的情况之一。过电应力基本与半导体器件相关,EOS事件包括有:静电放电(ESD)、雷击、系统瞬态、电磁脉冲、充电等。本文将详细讨论一下产品设计中如何关注EOS设计。

linkking27的博客 6485

断言

代码中放置一些假设,通过判断假设是否为真,进而判断程序是否正确。断言就是用来测试程序中的假设是否正确的,若果假设被违反,那么就中断程序的执行 断言assert是定义在assert.h中的 宏 ,只在debug版本起作用,而在release版本不起作用。用法:assert(表达式) 当表达式的值为真的时候,也就是假设成立的时候,系统继续运行;但是当表达式的值为假,也就是假设不成立的时候,他就会中断程...

weixin_44941350的博客 7778

S32K1XX Autosar开发实战|全网独家复现EB MCAL Port/Dio配置、详解引脚分层原理、实现经典跑马灯助力车载IO电控落地

在NXP S32K1XX系列车规MCU的AUTOSAR标准开发体系中,MCAL(微控制器抽象层)是软硬件解耦的核心载体,而Port端口模块与Dio数字IO模块是MCAL最基础、最核心的入门模块,也是车载指示灯、按键检测、继电器驱动、外设硬件启停控制的底层支撑。区别于传统裸机直接操作寄存器的开发方式,AUTOSAR架构采用分层隔离设计,Port负责硬件静态初始化、Dio负责动态电平操控,严格遵循车规级开发规范,杜绝硬件资源冲突、引脚配置混乱等问题。

getusushu的博客 43

Linux系统开发总览

先列一下Linux系统开发要掌握的知识,后续的文章中,会一 一讲解。 欢迎关注我的微信公众号:fensnote 文章目录Linux系统开发会用到什么?C语言基础shell脚本慢慢学会使用Makefile常规Linux系统编程知识都有什么?哪些常用?哪些不常用?常规Linux编程知识文件IO文件与目录操作标准IO库进程控制线程编程高级IO进程间通信数据库串口编程网络编程结束语 Linux系统开发...

fensnote的博客 516

华为OD机试真题 新系统 2026-04-26 Python&JS 实现【最大化游戏试玩资格分发】

新研发了一台游戏设备可以面向用户接受试玩。现有 n 个试玩申请,每个试玩有开始时间和结束时间。作为协调员,为了能让更多人体验到游戏,你需要对试玩申请进行选择,使得:

MISAYAONE的博客 289

SAP_SD模块销售利润中心替代简介

SAP SD模块跨公司销售利润中心替代简介 在SAP SD模块中,系统自动生成的财务凭证需要正确反映利润中心归属。当默认利润中心取值不符合业务逻辑时(如跨公司销售、多组织共用工厂等情况),需配置利润中心替代功能。该功能通过事务码0KEM定义替代规则,可根据物料、客户等条件自动替换利润中心字段。系统配置包括创建替代规则、定义先决条件、设置用户出口程序等步骤。对于复杂业务场景,还可通过用户出口或BADI增强实现。利润中心替代能确保销售收入与成本正确核算,避免利润分配错误,满足企业多维度利润分析需求。

我小时候很黑的博客 433

旅行者

时光匆匆,划过人间,万物周而复始,不变的是那份情! 旅行者 生命的开始,就预示着一个漫长的旅途的开始,我是这个路途的旅行者。 旅行者的脚步注定是匆忙的,因为要去的地方太多,旅行者是一个不安分的人,是一个闲不住的人,不喜欢去习惯某一个地方、某一个人、某一种生活!也注定与别人都是擦肩而过!不曾为谁而停留! 在这个旅途中,旅行者在意的永远是陌生的地方,陌生的人。 不曾为谁而停留,也许会,只是还没有看到一个自己想停下来的地方。也许没有,那永远在远方。 走吧!我希望走不到尽头!永远在路上,风同行,雨同路,共天地共存

fensnote的博客 285

STM32F767 GPIO跑马灯工程从零搭建指南

嵌入式开发中,基于HAL库的STM32工程初始化是确保外设可靠运行的基础环节。其核心在于理解芯片时钟树配置原理、GPIO工作模式与硬件电气特性之间的映射关系。正确启用RCC时钟源、合理分配AHB/APB总线分频系数,可保障系统主频稳定;而精准设置推挽输出、上下拉状态及引脚速度,则直接影响LED等基础外设的驱动可靠性。结合STM32CubeMX图形化配置工具,开发者能将寄存器级操作抽象为可视化流程,显著提升工程可追溯性与复用性。本文以STM32F767IGT6和阿波罗开发板为载体,详解从Repository固

weixin_42453228的博客 61

Linux目录访问函数汇总

Linux下目录访问函数总结,主要是涉及到的函数,以及所在头文件。 获得工作目录: #include <unistd.h> char *getcwd(char *buf,size_t size);char *getwd(char *buf);/*this is for FreeBSD*/ 改变当前目录: #include <un...

fensnote的博客 178

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

《共享内存》Linux进程间通信入门

文章目录简述代码写端代码读取端代码编译运行微信公众号 个人微信公众号: fensnote 简述 共享内存是Linux系统进程间通信常用的方式,通常用于数据量较大的情况,如果只是用于不同的进程间消息通知,那不如用消息队列或者socket。之前做的项目中,使用共享内存的其实只有一种情况:视频数据的共享。设备类似于DVR,视频采集编码在一个独立的程序中,另一个程序负责协议通信。 共享内存要想好用,共...

fensnote的博客 203

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C语言日志工具EasyLogger推荐

文章目录日志简述EasyLogger简介编译运行附录EasyLogger说明1. 介绍1.1 主要特性1.2 插件1.3 Star & Fork2. 使用2.1 参数配置2.2 输出级别2.2.1 输出缤纷多彩的日志2.3 输出过滤2.4 输出格式2.5 输出方式2.6 Demo2.6.1 核心功能2.6.2 Flash Log(将日志保存到 Flash 中)2.6.2 File Log(将日志保存到文件中)3. 文档4. 后期5. 许可源码下载微信公众号:**fensnote** 日志简述 C/C

fensnote的博客 1803

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

嵌入式Linux的应用程序升级文件制作

简述 嵌入式Linux系统一般是将应用程序与文件系统、内核、资源文件等放在不同的分区,产品量产后内核、文件系统这些一般不会升级,应用程序可能升级会比较多一些。 有的嵌入式系统的应用程序分区用的也是可读写的,那比较方便,把文件打包然后解压到对应的分区目录下替换即可。有的是应用分区做成只读,这样需要将应用程序打包做成flash镜像,下载到设备上更新到flash上。 不论是那种方式,对应应用程序来说都需要打包起来,可以是压缩包,也可以是镜像文件。这些文件在导入到系统进行升级的时候,我们都需要对这个文件做一些必要的

fensnote的博客 1292

嵌入式C语言终端界面输出颜色

命令后界面输出颜色 嵌入式终端界面输出日志时,为了区分输出的有用信息、错误信息,可以给不同级别的输出加上不同的颜色,以方便查看。 下面是颜色的定义: //颜色宏定义 #define NONE "\033[m" #define RED "\033[0;32;31m" #define LIGHT_RED "\033[1;31m" #define GREEN "\033[0;32;32m" #define LIGHT_GREEN "\033[1;32m" #

fensnote的博客 1018

嵌入式Linux串口操作实例

简介 嵌入式Linux下串口编程与Linux系统下的编程没有什么区别,系统API都是一样的。嵌入式设备中串口编程是很常用的,比如会对接一些传感器模块,这些模块大多是RS232或者RS485接口,对于软件层面上来说,RS232与RS48区别不大。RS232与RS485在使用上的区别,RS232是全双工的,只能对接一个设备串口设备。RS485是半双工的总线协议,一般可以挂多个传感器设备,半双工的意思是同时只能有一个设备向串口发数据。 用到的API函数 函数 说明 open 打开设备,用于打开串口

fensnote的博客 636

Linux使用C语言实现ls命令

原理 在linux下使用C语言,通过调用Linux系统的目录访问API来实现一个类似于ls命令功能的小程序,主要是可以练习程序对命令的解析和目录API函数的使用。 实现代码 #include <stdio.h> #include <time.h> #include <sys/types.h> #include <sys/stat.h> #includ...

fensnote的博客 624

聊聊这些东西C、C++、boost、Qt在嵌入式系统开发中的使用

C语言 C语言大家都比较熟悉了,是属于底层编程语言了,计算机行业里有句话说“C生万物”!不得不说,C语言的出现,改变了计算机世界。 在嵌入式系统开发中,C语言可以用于各个部分的开发,uboot、内核、驱动、应用。所以只要会c语言,就可以做嵌入式系统开发,不过对于应用层的开发,还是C++好一些。 在这里也对C语言列举几个例子,展示下C语言的强大: Unix操作系统、Linux操作系统都是C语言开发...

fensnote的博客 485

Ubuntu共享环境配置

1. 添加linux用户 安装的开发用的虚拟机,一般不直接使用root账户,会新建一个普通用户,然后在/etc/sudoers添加上sudo的权限即可。 使用如下命令: sudo adduser --home /home/test test --home:添加用户指定的目录;(不同的adduser版本的参数可能不太相同) 最后跟的test为用户名; 输入这条命令后,系统会提示让输入用...

fensnote的博客 443

嵌入式系统时区设置为东8区

一般嵌入式系统里没有配置时区时,时区默认都是0时区,也就是UTC时间,为了与平台时间保持一致,最好修改一下时区。 UTC时间: Mon Oct 12 23:05:34 UTC 2020 修改时区的方法其实挺简单。 将你Ubuntu虚拟机的时区文件,拷贝出来,下载到板子里即可,文件为: /etc/localtime 放入板子后,输入命令date查看时间时,时间可能已经变为东八区。 Mon Oct 12 23:09:25 CST 2020 这里的代CST表 China Standard

fensnote的博客 355

海思3536c移植openssl

可以直接用以下命令生成makefile: CC=arm-hisiv500-linux-gcc ./config no-asm shared --prefix=/opt/openssl/ 就可直接使用make命令进行编译,使用make install命令安装。

fensnote的博客 254

Linux下软链接使用

软链接概述 软链接是Linux下常用的一种共享文件方式、目录的方式,这种方式类似于Windows下的快捷方式。一般一个文件或者目录在不同的路径都需要的时候,可以通过创建软链接的方式来共享,这样只系统下面只有一份源文件、目录。另外,巧用软链接,可以大大增加应用程序的可移植性。 软链接创建与删除 软链接创建与删除比较简单,使用ln命令创建链接文件,格式如下: ln -s [源文件或目录] [目标文件或目录] 示例: 建立一个指向/usr/local/www的软链接到/tmp下面: $: ln -s /u

fensnote的博客 252

Linux之线程入门示例

简介 Linux线程是需要连接pthreat库,线程的使用比进程更灵活,需要注意的是线程间的互斥,或者说是资源共享问题。 C++11之后,C++标准库也引入了线程,并且使用非常方便,以后再介绍,这里先发一个简单的线程示例代码。 代码 #include <stdio.h> #include <pthread.h> #include <string.h> #incl...

fensnote的博客 202
上一篇: Ubuntu共享环境配置
下一篇: Linux目录访问函数汇总
fensnote
博客等级 码龄7年 11粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值