blogernice

导航

2020年6月4日 #

C编程之堆栈回溯

摘要: 前言 在嵌入式系统C语言开发调试过程中,常会遇到各类异常情况。一般可按需添加打印信息,以便观察程序执行流或变量值是否异常。然而,打印操作会占用CPU时间,而且代码中添加过多打印信息时会显得很凌乱。此外,即使出错打印已非常详尽,但仍难以完全预防和处理段违例(Segment Violation)等错误。 阅读全文

posted @ 2020-06-04 09:28 blogernice 阅读(3518) 评论(0) 推荐(0) 编辑

Linux下C实现读取文件夹下所有文件(包括子文件夹)的文件名

摘要: Linux C 下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下: #include <dirent.h> struct dirent { long d_ino; /* inode number 索引节点号 */ off_t d_off; /* 阅读全文

posted @ 2020-06-04 09:26 blogernice 阅读(406) 评论(0) 推荐(0) 编辑

Linux下C语言实现多线程文件复制

摘要: 1、具体思路把一个文件分成N份,分别用N个线程copy,每个线程只读取指定长度字节大小的内容最后一个线程的源文件所指定的结束位置是文件的实际大小每个线程读取指定源文件部分的起始位置和结束位置的内容到缓冲区每个线程将缓存中的内容写入目的文件的指定开始位置和结束位置主线程必须等到所有线程copy完成后才 阅读全文

posted @ 2020-06-04 09:24 blogernice 阅读(303) 评论(0) 推荐(0) 编辑

C编程之错误处理

摘要: 前言 本文主要总结嵌入式系统C语言编程中,主要的错误处理方式。文中涉及的代码运行环境如下: 一 错误概念 1.1 错误分类 从严重性而言,程序错误可分为致命性和非致命性两类。对于致命性错误,无法执行恢复动作,最多只能在用户屏幕上打印出错消息或将其写入日志文件,然后终止程序;而对于非致命性错误,多数本 阅读全文

posted @ 2020-06-04 09:23 blogernice 阅读(832) 评论(0) 推荐(0) 编辑

ini文件解析C库(iniparser)

摘要: 一.交叉编译ini解析库 1.官方网站http://ndevilla.free.fr/iniparser 下载iniparser-3.1.tar.gz 2.解压 tar -zxvf iniparser-3.1.tar.gz cd tar -zxvf iniparser3.修改makefile CC 阅读全文

posted @ 2020-06-04 09:22 blogernice 阅读(661) 评论(0) 推荐(0) 编辑

DES和3DES加密算法C语言实现

摘要: DES和3DES加密算法C语言实现记录DES和3DES加密算法最简洁易懂的C语言源码主要是要用到CBC这部分的算法,后边也有一个工具可以提供验证,因为网上的工具含有CBC的很少,也方便大家吧 #define MBEDTLS_DES_ENCRYPT 1 #define MBEDTLS_DES_DECR 阅读全文

posted @ 2020-06-04 09:21 blogernice 阅读(881) 评论(0) 推荐(0) 编辑

linux kernel代码艺术,编译时断言

摘要: 本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核代码复习一下C语言及汇编语言的语法,二来学习内核开发大牛们书写代码的风格及思路。 在内核文件 inc 阅读全文

posted @ 2020-06-04 09:16 blogernice 阅读(104) 评论(0) 推荐(0) 编辑

linux malloc函数的实现

摘要: 很多学过C的人对malloc都不是很了解,知道使用malloc要加头文件,知道malloc是分配一块连续的内存,知道和free函数是一起用的。但是但是: 一部分人还是将:malloc当作系统所提供的或者是C的关键字,事实上:malloc只是C标准库中提供的一个普通函数 而且很多很多人都对malloc 阅读全文

posted @ 2020-06-04 09:14 blogernice 阅读(1828) 评论(0) 推荐(0) 编辑

深入剖析变长参数函数的实现

摘要: 什么是变长参数? 所谓含有变长参数的函数是指该函数可以接受可变数目的形参。例如我们都非常熟悉的 printf,scanf等等。 2:变长参数如何实现? 首先来看下面这样一个例子: #include<stdio.h>#include<stdarg.h>#include<string.h> void d 阅读全文

posted @ 2020-06-04 09:13 blogernice 阅读(183) 评论(0) 推荐(0) 编辑

Linux下检查内存泄漏的工具

摘要: 概述 内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的、复杂的应用程序中,内存泄漏是常见的问题。当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,这时就出现了内存泄漏。尽管优秀的编程实践可以确保最少的泄漏,但是根据经验,当使用大量的 阅读全文

posted @ 2020-06-04 09:11 blogernice 阅读(800) 评论(0) 推荐(0) 编辑

C语言字节对齐 __align(),__attribute((aligned (n))),#pragma pack(n)

摘要: 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然 阅读全文

posted @ 2020-06-04 09:09 blogernice 阅读(701) 评论(0) 推荐(0) 编辑

__attribute__机制

摘要: GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__是用来设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__at 阅读全文

posted @ 2020-06-04 09:07 blogernice 阅读(100) 评论(0) 推荐(0) 编辑

Linux下C语言实现内存池

摘要: 操作系统:ubuntu10.04前言: 在通信过程中,无法知道将会接收到的数据的长度,因此开一个固定大小的缓冲区并不合适,开大了,很可能大多数通信都只是几十个自己而已;开小了,又无法处理大数据。因此最好的方法就是创建内存池,根据实际情况,分配合适大小的内存空间。一,思路 通过双向链表,管理所有的内存 阅读全文

posted @ 2020-06-04 09:04 blogernice 阅读(466) 评论(0) 推荐(0) 编辑

Linux下实现多线程通信,环形缓冲区,可用于producer/consumer

摘要: 操作系统:ubuntu10.04前言: 在嵌入式开发中,只要是带操作系统的,在其上开发产品应用,基本都需要用到多线程。 为了提高效率,尽可能的提高并发率。因此,线程之间的通信就是问题的核心。 根据当前产品需要,使用 环形缓冲区 解决。一,环形缓冲区的实现 1,cbuf.h 点击(此处)折叠或打开 # 阅读全文

posted @ 2020-06-04 09:02 blogernice 阅读(374) 评论(0) 推荐(0) 编辑

Linux下C语言实现的哈希链表

摘要: 操作系统:ubuntu10.04前言: 在稍微大点的项目中,基本都会遇到算法问题,特别是大数据的查找。 在当前项目中,使用到了哈希链表。一,概述 实现思路:用数组保存哈希桶的关键信息,再用链表链接数据到对应的哈希桶中。 如:管理很多字符串。以a~z,?为哈希桶。 二,实现 1,结构 点击(此处)折叠 阅读全文

posted @ 2020-06-04 08:57 blogernice 阅读(747) 评论(0) 推荐(0) 编辑

有没有一段代码,让你觉得人类的智慧绚烂无比!

摘要: 当然是这个啦!用三段 140 字符以内的代码生成一张 1024×1024 的图片原文 by Matrix67 Kyle McCormick 在 StackExchange 上发起了一个叫做 Tweetable Mathematical Art 的比赛,参赛者需要用三条推这么长的代码来生成一张图片。具 阅读全文

posted @ 2020-06-04 08:52 blogernice 阅读(184) 评论(0) 推荐(0) 编辑

结构体字节对齐

摘要: 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列, 而不是简 阅读全文

posted @ 2020-06-04 08:47 blogernice 阅读(106) 评论(0) 推荐(0) 编辑