摘要: 说明 本文主要介绍某嵌入式产品中DSL用户态驱动模块作为守护进程时,如何接收终端输入的变通性方法。 出于信息安全考虑,文中涉及系统方面的接口函数未给出实现细节,但不影响表述的完整性。 相关性文章参见《GNU Readline库函数的应用示例》。一 背景知识 init进程(如Busybox i... 阅读全文
posted @ 2014-08-06 12:52 clover_toeic 阅读(2400) 评论(0) 推荐(5) 编辑
摘要: 说明 GNU Readline是一个跨平台开源程序库,提供交互式的文本编辑功能。应用程序借助该库函数,允许用户编辑键入的命令行,并提供自动补全和命令历史等功能。Bash(BourneAgainShell)、GDB、ftp 和mail等程序就使用Readline库提供其命令行界面。 Readlin... 阅读全文
posted @ 2014-08-05 17:02 clover_toeic 阅读(9901) 评论(0) 推荐(5) 编辑
摘要: 一 原型说明 strcat()为C语言标准库函数,用于字符串拼接。函数原型声明在string.h头文件中:char *strcat(char *dest, const char *src); 该函数将参数src所指字符串拷贝到参数dest所指字符串的结尾处(覆盖dest结尾处的'\0')并添加'... 阅读全文
posted @ 2014-08-01 15:56 clover_toeic 阅读(9213) 评论(4) 推荐(1) 编辑
摘要: 引言 考虑下面的结构体定义:1 typedef struct{2 char c1;3 short s; 4 char c2; 5 int i;6 }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址... 阅读全文
posted @ 2014-07-18 16:04 clover_toeic 阅读(113909) 评论(16) 推荐(93) 编辑
摘要: 一 前言 预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置。 预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分... 阅读全文
posted @ 2014-07-17 17:35 clover_toeic 阅读(46160) 评论(5) 推荐(44) 编辑
摘要: 1. 预编译阶段可知的信息 假设代码某处有宏定义如下:1 #define MACRO 2 则: 1) 查看宏名是否定义2 #if defined MACRO3 #error defined MACRO!4 #endif 2) 查看宏值是否某值5 #if (2 == MACRO)6 ... 阅读全文
posted @ 2014-07-16 17:10 clover_toeic 阅读(3234) 评论(0) 推荐(2) 编辑
摘要: 前言 良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较。但要精确测量程序的运行时间并不容易,因为进程切换、中断、共享的多用户、网络流量、高速缓存访问及转移预测等因素都会对程序计时产生影响。 本文将不考虑这些影响因素(相关资料可参考《深入理解计算机系统》一书),而仅仅关注... 阅读全文
posted @ 2014-07-16 16:08 clover_toeic 阅读(21113) 评论(7) 推荐(18) 编辑
摘要: 说明 本文在《MDU某产品OMCI模块代码质量现状分析》一文的基础上,分享作者对该模块进行重构时的实践经验。 具体的重构手段可参考《代码大全2》或《重构:改善既有代码的设计》,本文不再班门弄斧,而侧重重构时一些粗浅的“方法论”,旨在提高重构效率。 作者未采用重量级的重构工具,仅用到Source... 阅读全文
posted @ 2014-07-14 15:36 clover_toeic 阅读(9853) 评论(12) 推荐(19) 编辑
摘要: 说明 本文基于链表实现C语言堆内存的检测机制,可检测内存泄露、越界和重复释放等操作问题。 本文仅提供即视代码层面的检测机制,不考虑编译链接级的注入或钩子。此外,该机制暂未考虑并发保护。 相关性文章参见: 《C语言通用双向循环链表操作函数集》 《C语言内存使用的常见问题及解决之道》一 原理 ... 阅读全文
posted @ 2014-07-03 11:39 clover_toeic 阅读(2019) 评论(6) 推荐(9) 编辑
摘要: 一 前言 本文所讨论的“内存”主要指(静态)数据区、堆区和栈区空间(详细的布局和描述参考《Linux虚拟地址空间布局》一文)。数据区内存在程序编译时分配,该内存的生存期为程序的整个运行期间,如全局变量和static关键字所声明的静态变量。函数执行时在栈上开辟局部自动变量的储存空间,执行结束时自动释... 阅读全文
posted @ 2014-06-30 16:08 clover_toeic 阅读(13832) 评论(0) 推荐(12) 编辑