
linux应用编程
文章平均质量分 80
coding__madman
爱IT & 爱生活 && no error & no warn
展开
-
Linux串口编程一次读取全部输入的数据(输入数据不定长)
编程背景:板子是linux 2.6.39系统,人机交互接口是板子上的一个串口。输入命令时,当长度大于8时,发现read读取到的数据是分多次得到的(串口用非阻塞模式读取数据),比如输入的字符长度为25(循环读取,下面贴代码):第一次读取8个,并发生串口中断(发生中断后中间会有一小会读不到数据,实测),然后又读取8个、8个、1个(‘\0’不占位),查了下原因,好多网友也遇到了这个问题,看了几个帖子原创 2016-01-26 13:59:00 · 13271 阅读 · 3 评论 -
fread函数小笔记
fread函数:从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。函数原型: size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;参 数buffer: 用于接收数据的内存地址 size:原创 2016-08-26 10:03:26 · 826 阅读 · 0 评论 -
Linux C 库函数判断一个文件是否为空
C语言fgetc()函数的返回值意义函数原型:int fgetc( FILE* stream );这个函数的返回值,是返回读取的一个字节。如果读到文件末尾返回EOF。EOF其实就是一个宏:#define EOF (-1) 表示-1.既然返回的是一个字节,为什么返回值确用4字节的int表示,不用unsigned char这1个字节类型表示,或直接用char类型表示?原因就原创 2016-07-21 18:48:30 · 6752 阅读 · 0 评论 -
串口传文件(非终端串口,自己定协议下位机部分C语言实现)
之前项目中有个地方要实现一个功能,就是通过非终端串口传输文件,这里将其作为一个小功能模块,简单的介绍一下自己是如何实现的!SecureCRT超级终端上可以通过lrz等工具通过命令传输文件这个就不介绍,之前的博客也有写过怎么编译移植使用这个工具,这次是自己来编码实现通过非终端调试串口来安全可靠的传输任何文件。其实刚开始想的时候觉得有一点难度,一是要自己定协议,如何定协议才合理呢?二是当时自己也想原创 2016-07-31 22:26:48 · 4294 阅读 · 0 评论 -
SHA1校验算法C语言实现
SHA1 安全哈希算法:对于长度小于2^64位的消息(1M = 1024k,1K = 1024字节,1BYTE = 8bit 可以想象一下2的63次方位可以表示一个多大的数据文件),SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信原创 2016-07-31 21:25:58 · 20229 阅读 · 3 评论 -
已知平面三点坐标求其中两条边之间的夹脚
回首这篇两年前写的博客,算是自己觉得比较有意思的一篇了,那时候刚拿毕业证也就一年左右吧,在一家小公司写代码,然后一同事也是前辈向我讨教这个问题,问我有没有招编程解决这个问题。抱着试试看的态度立马就研究了起来,从理论到实践,也是第二次感觉到数学和代码的结合真的很奇妙(第一感觉神奇的是在学校实验室捣鼓四轴飞行器的pid算法,通过用微分和积分的以及比例控制对飞机的过去、现在、以及未来的飞行姿态做最佳调控...原创 2016-06-15 19:20:31 · 3888 阅读 · 0 评论 -
epoll机制读取linux串口数据
epoll和select相比,最大不同在于:1epoll返回时已经明确的知道哪个sokcet fd发生了事件,不用再一个个比对。这样就提高了效率。2select的FD_SETSIZE是有限止的,而epoll是没有限止的只与系统资源有关。原创 2016-06-14 10:04:43 · 9428 阅读 · 0 评论 -
linux TXT文件操作 '^@ ' 'NUL' 符号乱码问题
linux文件编程TXT文档在windows下打开有乱码问题(显示非显示字符)原创 2015-12-29 14:48:52 · 6707 阅读 · 0 评论 -
应用程序运行***buffer overflow detected*** terminated Aborted异常退出问题
今天运行程序,改了一段代码!然后每次一运行程序就异常退出,打印如下信息:*** buffer overflow detected ***: ./shm_costomer terminatedAborted根据单词的意思是缓存越界的问题!自己反复检查了自己修改的那部分代码,发现不存在这种情况!然后直接把自己这段代码屏蔽掉重新编译再运行,发现程序还是挂掉了!但是这个程序之前几个月都运行原创 2016-05-26 15:03:07 · 34305 阅读 · 1 评论 -
select、poll、epoll之间的区别总结(转)
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用转载 2016-05-24 10:16:53 · 855 阅读 · 0 评论 -
Linux多线程编程API基础---1
背景:工作需要用到Linux多线程编程,在学习和实践中学到了不少关于linux多线程编程技术,在此整理成笔记,以便以后温故而知新!原创 2016-03-02 17:50:00 · 644 阅读 · 0 评论 -
从Linux程序中执行shell(程序、脚本)并获得输出结果
1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令。但是,system函数仅返回命令是否执行成功,而我们可能转载 2016-03-24 17:01:15 · 1760 阅读 · 0 评论 -
getopt函数和getopt_long函数详解
getopt函数函数功能:用来解析命令行参数,参数argc和argv分别代表参数个数和内容,跟main()函数里的命令行参数一样函数所在头文件:#include函数原型定义:int getopt(int argc, char* const argv[ ], const char *optstring )参数optstring: 为选项字符串,告知getopt可以处理那个选项以及哪个原创 2016-04-02 15:56:14 · 18427 阅读 · 0 评论 -
Linux生成以当前时间年/月/日命名的文件夹并向相应目录文件中写数据例程
功能需求:在linux下一切皆文件,由于需要向SD卡里面写数据,并且在相应的目录下要一天一个TXT文档。比如当前时间 2016年3月7日,则要生成一个以年为目录名的文件夹2016,然后在2016这个目录下在生成一个以月为目录名的文件夹03,然后在03这个目录下以当前日期命名的每天一个TXT文档。及每当年月日发生变化时,都会有新的文件夹和TXT文件同步生成。当时网上查了一下,这方面的资料不是很多,基原创 2016-03-07 18:11:10 · 5965 阅读 · 0 评论 -
多线程编程---信号量
信号量也就是操作系统中所用到的 PV 原子操作,它广泛用于进程或线程间的同步与互斥。信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。PV原子操作的工作原理:PV原子操作是对整数计数器信号量sem的操作。一次P操作使sem减一,而一次V操作使sem加一。进程(或线程)根据信号量的值来判断是否对公共资源具有访问权限。当信号量sem的值大于等于零时,该进程(或线程)具有原创 2016-03-30 12:48:28 · 1180 阅读 · 0 评论 -
Linux多线程编程---条件变量
条件变量为什么需要条件变量:在多线程编程中仅使用互斥锁来完成互斥是不够用的,如以下情形:假设有两个线程 t1 和 t2,需要这个两个线程循环对一个共享变量 sum 进行自增操作,那么 t1 和 t2 只需要使用互斥量即可保证操作正确完成,线程执行代码如所示:pthread_mutex_t sumlock= PTHREAD_MUTEX_INITIALIZER; void * t1t2原创 2016-03-30 08:58:04 · 664 阅读 · 0 评论 -
Linux多线程编程---2
1. 线程概念:线程是包含在进程内部的顺序执行流,是进程中实际运作单位,也是操作系统能够进行调度的最小单位,一个进程中可以并发多条线程,每条线程并行执行不同的任务。2. 线程与进程的关系 1> 一个线程只能属于一个进程,但是一个进程可以有多个线程,但至少有一个主线程。 2> 同一进程的所有线程共享该进程的所有资源。 3> 线程作为调度和分配的基本单位,进程作为拥有原创 2016-03-29 17:38:02 · 1040 阅读 · 0 评论 -
C语言读取配置文件以及128字节对齐.bin配置文件
配置文件:#begin build propertiesfactory=四川九州电子科技股份有限公司oui=03product_type=71stbid=0371419916190000129hw_version=00000473sw_version=2016-10-11 17:27swdate=20161010soc=Hi3796MV100product_type_eoc=原创 2016-10-23 21:50:35 · 1881 阅读 · 0 评论