
c 语言
文章平均质量分 70
alex_xhl
专注软件架构设计,性能分析和优化。
展开
-
linux中Framebuffer的原理及实现机制
linux中Framebuffer的原理及实现机制*一、FrameBuffer的原理* FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出 FrameBuffer这 个设备来供用户态进程实现直接写屏转载 2012-02-06 17:42:57 · 763 阅读 · 0 评论 -
fork() 与 vfork()比较
1.fork() 和vfork()都是创建一个新的进程.但是存在区别: fork()新创建出来的子进程和父进程对调度器而言是平等的,不能知道哪个进程先执行,由调度器决定. 而vfork()创建的子进程一定比父进程先执行. 实例如下:test.c #include #include #include int main(void){ pid_t pi原创 2012-02-13 10:49:23 · 530 阅读 · 0 评论 -
Linux IPC(InterProcess Communication) 进程通信
今天抽空把Linux IPC (InterProcess Communication)总结一下.在开发大型应用程序时,避免不了要使用到多个进程协作完成任务.在Linux中进程间通信主要有如下几种方式. 下文中将简单介绍这几种通信机制及其使用的范围.按照一些书上的描述,一般分为2类: 基于文件系统 和 基于内核. 但我个人觉得, 可以分为3类: 和文件系统及内核无关, 基于文件系统, 基于内原创 2012-02-15 09:27:24 · 950 阅读 · 0 评论 -
动态内存分配
前言1.数组的元素存储于内存中连续的位置上。当一个数组被声明时,它所需要的内存在编译时就被分配。2.但是我们也可以使用动态内存分配在运行时为它分配内存。3.为什么使用动态内存分配1>当使用数组时,必须用一个常量来指定数组的长度。但是,有时候,数组的长度常常在运行时才知道。因此,在某些情况下,我们通常采取声明一个较大的数组,它可以容纳可能出现的最多元素。2>该方法的优点是:简单。转载 2012-02-15 13:22:31 · 814 阅读 · 0 评论 -
预处理器 包含Linux特性的资料
一.前言1.编译一个C程序涉及很多步骤。其中第一步骤称为预处理(preprocessing)阶段。C预处理器(preprocessor)在源代码编译之前对其进行文本性质的操作。2.它的主要任务包括删除注释、插入被#include指令包含的内容、定义和替换由#define指令定义的符号以及确定代码的部分内容是否应该根据一些条件编译指令经行编译。二.预定义符号1.以下为预处理器定义的符转载 2012-02-15 11:30:46 · 751 阅读 · 0 评论 -
字符串常量
1.当一个字符串常量出现于表达式中时,它的值是一个指针常量。编译器被这些指定字符的一份拷贝存储在内存的某个位置,并存储一个指向第一个字符的指针。(数组名用于表达式中时,它的值也是指针常量)2.”xyz”+1因为字符串常量实际上是个常量指针,这个表达式计算“指针值加上1”的数值。它的结果是个指针,指向字符串中的第2个字符:y。3.*”xyz”因为“xyz”是一个指针常量,指向字符转载 2012-02-15 11:36:17 · 580 阅读 · 0 评论 -
位段
1.位段的声明和结构类似,但它的成员是一个或多个位的字段。这些不同长度的字段实际上存储于一个或多个整型变量中。2.位段的声明和任何普通的结构成员声明相同,但有两个例外。1>位段成员必须声明为int,singed int 或unsigned int类型。2>其次,在成员名的后面是一个冒号和一个整数,这个整数指定该位段所占用的位的数目。eg:struct CHAR {转载 2012-02-15 13:40:05 · 692 阅读 · 0 评论 -
kfifo 源码剖析
从2.6.10开始,Linux内核提供了一个通用的环形缓存(我喜欢称为环形队列);它的头文件是,kfifo.c是实现代码。 在设备驱动中环形缓存出现相当多. 网络适配器, 特别地, 常常使用环形缓存来与处理器交换数据(报文)[LDD3]。 见下面的图“LDD3中描述的队列”。我们来看下kfifo的数据结构:struct kfifo { unsigned char *buffer转载 2012-02-23 17:42:13 · 949 阅读 · 0 评论 -
good blog
http://coolshell.cn/articles/5761.html酷壳 – CoolShell.cn享受编程和技术所带来的快乐 – http://coolshell.cn原创 2012-02-16 09:35:39 · 532 阅读 · 0 评论 -
Linux 多线程函数解析
Linux多线程函数解析Linux多线程函数用得比较多的是下面的3个pthread_create(),pthread_exit(),pthread_join();它们都是在头文件之中。编译时需要加静态库-lpthread下面是函数的说明: pthread_create是UNIX环境创建线程函数int pthread_create(pthread_t *restrict t转载 2012-02-17 11:57:36 · 566 阅读 · 0 评论 -
建立单链表的2种实现方法-->单链表操作
#include struct myList{ int data; struct myList *next;};int createListFromHead(struct myList **list, int n){ struct myList *p = NULL; int i = 0; *list = (stru原创 2012-02-09 13:15:42 · 668 阅读 · 0 评论 -
传递指针的各种用法
#include void fun1(int *p){ *p = 1;}void fun2(void *p){ int *q = NULL; q = (int *)p; *q = 2;}void fun3(int p){ int *q = NULL; q = (int *)p; *q原创 2012-02-09 08:52:52 · 587 阅读 · 0 评论 -
使用 /proc 文件系统来访问 Linux 内核的内容
这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口简介: /proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux® 内核空间和用户空间之间进行通信。在 /proc 文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段,但是与普通文件不同的是,这些虚拟文件的内容都是动态创建的。本文对 /proc 虚拟文件系统进行了介绍,并展示了它转载 2012-02-06 17:37:03 · 732 阅读 · 0 评论 -
6字节数据 做 二分查找并插入排序
下列程序可以对 6字节数据 进行二分查找,查找成功返回找到的位置,查找失败返回应该插入的位置,并将新数据插入到有序数据中.test.cunsigned long myBinSearch(unsigned char *R, int n , unsigned char *K, unsigned long *index){ long low=0; long原创 2012-02-07 09:04:16 · 623 阅读 · 0 评论 -
C语言使用注意事项(一)
原创作品,转载请表明http://blog.youkuaiyun.com/yming0221/article/details/7233564更多查看C语言使用注意事项(二)C语言使用注意事项(三)1、getchar()函数的使用方法getchar()返回值为int型,如下使用方法不正确[cpp] view plaincopyprint?#include转载 2012-02-07 12:25:01 · 536 阅读 · 0 评论 -
C语言使用注意事项(三)
原创作品,转载请标明http://blog.youkuaiyun.com/yming0221/article/details/7237762本文接上文C语言使用注意事项(一)C语言使用注意事项(二)1、自己实现itoa(int)函数,由整型转换成字符串。大家看看下面的是否有错?[cpp] view plaincopyprint?/********转载 2012-02-07 12:27:57 · 539 阅读 · 0 评论 -
如何修改下列程序才避免段错误
test1.c#include int main(void){ int input = 0; printf("Input a int number: \n"); scanf("%d", input); printf("input = %d \n", input); return 0;}上述程序运行会发生段错误原创 2012-02-08 09:10:17 · 1088 阅读 · 0 评论 -
程序员面试、算法研究、编程艺术、红黑树4大系列集锦与总结
http://blog.youkuaiyun.com/v_july_v/article/details/6543438#comments程序员面试、算法研究、编程艺术、红黑树4大经典原创系列集锦与总结作者:July--结构之法算法之道blog之博主。时间:2010年10月-2011年6月。出处:http://blog.youkuaiyun.com/v_JULY_v 。声明:版权所有转载 2012-02-08 12:13:58 · 1320 阅读 · 0 评论 -
C语言使用注意事项(二)
原创作品,转载请标明http://blog.youkuaiyun.com/yming0221/article/details/7235085更多查看C语言使用注意事项(一)C语言使用注意事项(三)1、如何使用指针调用函数如下例[cpp] view plaincopyprint?#include void func() { printf转载 2012-02-07 12:27:34 · 639 阅读 · 0 评论 -
Linux下c语言实现将一个目录下的所有文件和目录复制到另一个目录下
#include#include#include#include#include#include#includechar paths[1000],patht[1000],temp_paths[1000],temp_patht[1000];void Copy(char *spathname,char *tpathname){ int sfd,tfd;转载 2012-02-08 11:54:27 · 5810 阅读 · 3 评论 -
填充文件后面为0xFF到指定大小
以下程序可以填充文件后面全部为0xff到指定大小.test.c#include /* * Return: 0, OK* -1, Fail*/unsigned long int appendFile(char *destFilePath, unsigned long int appendLength){ unsigned原创 2012-02-07 09:08:43 · 3852 阅读 · 0 评论 -
ffmpeg开发指南
FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码.TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg。 一、转载 2012-03-06 18:14:04 · 2307 阅读 · 4 评论 -
ALSA driver 参考code
alsa-driver-1.0.23\alsa-driver-1.0.23\arm\sa11xx-uda1341.c原创 2012-03-08 10:46:20 · 866 阅读 · 0 评论 -
如何成为一名优秀的C程序员
问题的提出 每过一段时间我总会收到一些程序员发来的电子邮件,他们会问我是用什么编程语言来编写自己的游戏的,以及我是如何学习这种编程语言的。因此,我认为在这篇博文里列出一些有关C语言的最佳读物应该能帮到不少人。如果你知道其它的优秀读物,请给我发邮件或者直接在评论栏中告诉我吧。 问题的解答(你可以略过这部分) 我在之前的一篇博文中已经提到过了,目前为止,所有我所编写的商业 3D 引擎转载 2012-10-10 15:08:13 · 961 阅读 · 0 评论 -
C库函数
C库函数 ,备查.功能范围 函数名 函数原型 具体功能 三角函数与 反三角函数 sin double sin(double x); 计算x弧度的正弦值 cos double cos(double x); 计算x弧度的余弦值 tan double tan(double x); 计算x弧度的正切值 asin double asin(double x); 计算绝对值不大于1的浮点转载 2012-12-26 18:28:38 · 1024 阅读 · 0 评论 -
复习链表操作
准备:动态内存分配一、为什么用动态内存分配但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数组。比如说我们要存储一个班级学生的某科分数,总是定义一个float型(存在0.5分)数组:float score[30];但是,在使用数组的时候,总有一个问题困扰着我们:数组应该有多大?在很多的情况下,你并不能确定要使用多大的数组,比如上例,你可能并转载 2012-12-14 16:24:27 · 588 阅读 · 0 评论 -
建立单链表并打印链表节点值
一次性编码搞定, 建立单链表并打印链表节点值.linklist.c#include #include #include #define DEBUG_PRT(fmt,arg...) printf(fmt,##arg)typedef struct linklist{ int value; struct linklist *n原创 2012-12-19 11:11:43 · 1044 阅读 · 0 评论 -
通过函数参数形式申请二级指针空间, 代码改错
在不大幅修改基础上, 修改如下代码中所有错误.#include #include void build_2d_array(int file_count , int dict_size , char **array) ;void print_array(int m , int n , char**p);int main(){ int a= 5 ;原创 2012-12-19 18:18:17 · 729 阅读 · 0 评论 -
单链表 建立, 查找, 删除, 插入 操作
完善一下单链表操作.linklist.c#include #include #include #define DEBUG_PRT(fmt,arg...) printf(fmt,##arg)typedef struct linklist{ int value; struct linklist *next;}My原创 2012-12-19 13:54:43 · 957 阅读 · 0 评论 -
linux UDP 局域网内广播通信服务器端和客户端
在调试局域网内通过UDP协议获取其他设备IP地址时,服务器使用UDP 广播后, 客户端设备无响应. 先研究一下正常情况下, UDP广播通信方法. 参考了网络上一写资料. 代码整理如下:服务器端向: 255.255.255.255:6023发送UDP广播:serverUDP.c#include #include #include #include #include原创 2013-02-04 10:18:13 · 6016 阅读 · 0 评论 -
linux检测网线插拔小程序
参考网络资料,经整理验证ok.#include #include #include #include #include int net_detect(char* net_name){ int skfd = 0; struct ifreq ifr; struct sockaddr_in *pAddr = NULL; skfd =原创 2013-02-17 13:41:26 · 4449 阅读 · 1 评论 -
linux 系统获取网络ip, mask, gateway, dns信息小程序
net_util.c #define WIRED_DEV "eth0" #define WIRELESS_DEV "ra0" #define PPPOE_DEV "ppp0"#define DEBUG_PRT(fmt, a原创 2012-12-31 10:41:23 · 5556 阅读 · 2 评论 -
c语言 curl
c语言 curl前两天看到有人求客户端socket 发HTTP包的代码,受flw版主启发找了一些perl的资料,不过对perl 还是不太熟悉。也没有深入的研究。无意中发现了libcurl.so 这个库。去google上搜索发现它是处理客户端发送HTTP请求的库 以及可以处理web服务器回送回来的包。研究了两天将研究的成果,共享出来给大家一起研究。参考:http://cu转载 2013-03-12 10:47:36 · 3534 阅读 · 0 评论 -
ubuntu获取usb盘挂载点小程序
#include #include #include #include #include #include #include #include static unsigned long get_file_size(const char *path){ struct stat statbuff; if(stat(path, &statbuff)原创 2012-12-06 16:32:20 · 961 阅读 · 0 评论 -
查找指定文件中特定字符串赋值
#include #include #include #include #include #include #include #include static unsigned long get_file_size(const char *path){ struct stat statbuff; if(stat(path, &statb原创 2012-12-06 16:42:56 · 650 阅读 · 0 评论 -
Linux网络编程-
(一)Linux网络编程Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。比如我们使用ftp程序从另外一个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件),所以这个地方我转载 2012-10-11 11:21:22 · 932 阅读 · 0 评论 -
Linux下的C编程实战(开发平台搭建,文件系统编程,进程控制与进程通信编程,“线程”控制与“线程”通信编程,驱动程序设计,专家问答)
Linux下的C编程实战(一)――开发平台搭建1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性。而近年来,Linux操作系统在嵌入式系统领域的延伸也可谓是如日中天,许多版本的嵌入式Linux系统被开发出来,如ucLinux、RTLinux、ARM-Linux等等。在嵌入式操作系统方面,Linux的转载 2012-10-12 11:12:18 · 3603 阅读 · 0 评论 -
Linux网络编程必看书籍推荐
首先要说讲述TCP/IP的书很多,其中有3泰书很全。分别是《TCP/IP详解》三卷本,《用TCP/IP进行网际互连》三卷本,《TCP/IP指南》+《IPv6》四卷本其中TCP/IP详解的作者还写了另外2本经典著作,《Unix环境高级编程》,《Unix网络编程》作者W.Richard Stevens个人网站 http://www.kohala.com/大师作品部部经转载 2012-10-14 13:54:33 · 960 阅读 · 0 评论 -
GPIO模拟类I2C总线基础函数实例
我们先了解一下I2C总线基础知识.I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C 总线的概念 I2C 总线支持任何IC 生产过程(NMOS CMO原创 2012-10-16 18:41:40 · 1402 阅读 · 0 评论 -
kscope使用感受
今天在网上搞到了一个Linux版的source Insight,它叫kscope,我用的是1.6的版本1、安装。kscope是一个基于GPL的自由软件。你可以从http://kscope.sourceforge.net/上下载到它,或者利用Linux自带的包管理器自动下载并安装。1,AS4 linux-2.6.92. 官方网站下载 http://kscope.sourcefor转载 2012-10-31 10:44:00 · 1475 阅读 · 0 评论