
coding
文章平均质量分 56
chaehom
这个作者很懒,什么都没留下…
展开
-
读配置文件方法汇总
1. keyword valueint getValue(const char *line, const char * keyword, char * value){ char *s = line, *t; s = strstr(s, keyword); if(NULL == s) return 0;原创 2012-07-10 15:03:44 · 392 阅读 · 0 评论 -
【转】深入理解Linux内核--信号(阅读笔记)
有些没看明白,先转了,有空再仔细研究由 王宇 原创并发布 :源链接 第十一章信号 信号用于在用户态进程间通信。内核也用信号通知进程系统所发生的事情。 1、信号的作用 信号(signal)是很短的消息,可以被发送到一个进程或一组进程。发送给进程的唯一信息通常是一个数,以此来标识信号。 使用信号的两个主要目的 :转载 2013-06-26 11:57:18 · 618 阅读 · 0 评论 -
C++中实现回调机制的几种方式
转自:http://www.cnblogs.com/weiym/archive/2012/08/28/2660053.html(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Download完成时需要触发一个通知外面的事件:typed转载 2013-07-16 21:56:16 · 500 阅读 · 0 评论 -
int *f() 与 int (*pf)() 区别
int *f(); /* f是一个函数,返回一个指向int类型的指针*/int (*pf)(); /*pf是一个指向函数的指针,返回一个int类型的对象*/说明:*是一个前缀运算符,其优先级低于(),所以,声明中必须用园括号以保证正确的结合顺序原创 2013-08-12 14:32:10 · 3118 阅读 · 0 评论 -
Linux信号表
转自:http://hi.baidu.com/leiodwei/item/a5d85ac32e3b482bef4665ce1) SIGHUP 本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联. 2) SIGINT 程序终止(interrupt)信号, 在用户键入IN转载 2013-08-29 19:22:55 · 494 阅读 · 0 评论 -
epoll精髓
转自:http://www.cnblogs.com/OnlyXP/archive/2007/08/10/851222.html在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用转载 2013-09-07 22:35:52 · 604 阅读 · 0 评论 -
简单的epoll讲解
作者:蓝形参 Geek 伪技术宅 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数转载 2013-09-07 21:52:50 · 638 阅读 · 0 评论 -
socket阻塞与非阻塞,同步与异步、I/O模型
转自:http://blog.youkuaiyun.com/hguisu/article/details/7453390socket阻塞与非阻塞,同步与异步作者:huangguisu1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:转载 2013-09-08 16:08:35 · 542 阅读 · 0 评论 -
mmap详解
转自:http://kenby.iteye.com/blog/1164700共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程转载 2013-09-08 13:36:57 · 580 阅读 · 0 评论 -
内核空间和用户空间IPC的几种方法
可以有这么几种一、setsockopt / getsockopt二、mmap三、proc / seq_file File System四、netlink五、copy_from_user / copy_to_user (其实大部分实质就是这个)六、文件参考这篇: http://bbs.chinaunix.net/thread-1940094-1-1.html原创 2013-09-29 16:41:31 · 815 阅读 · 0 评论 -
Why do a lot of #defines in the kernel use do { ... } while(0)?
Why do a lot of #defines in the kernel use do { ... } while(0)?There are a couple of reasons:(from Dave Miller) Empty statements give a warning from the compiler so this is why you s转载 2013-10-01 21:38:37 · 591 阅读 · 0 评论 -
Linux内存:内存管理的实质
转自CU: http://bbs.chinaunix.net/thread-2055231-1-1.html1. 内核初始化:* 内核建立好内核页目录页表数据库,假设物理内存大小为len,则建立了[3G--3G+len]::[0--len]这样的虚地址vaddr和物理地址paddr的线性对应关系;* 内核建立一个page数组,page数组和物理页面系列完全是线性对应,pag转载 2013-09-29 14:54:28 · 465 阅读 · 0 评论 -
判断程序实例是否已经运行的N种方法
转自:http://socol.iteye.com/blog/6877281. 在创建的文件中写入进程的ID,如果机器非正常退出,重启后先读取这个文件,得到进程ID,再根据ID判定进程是否正在运行,如果不是,则把文件删除掉。这样就不会发生不删除文件,程序运行不起来的问题了。 2. 打开一个文件,然后锁定,新运行的程序会试图再次锁定该文件,但是因为已经被锁定,转载 2013-12-23 15:41:10 · 974 阅读 · 0 评论 -
碰到no version information available问题
先说下环境:本地fedora系统,libmysqlclient.so版本是18而服务器Centos 6.3,libmysqlclient.so版本是16backend是在本地fedora上编译,链接。。然后远程拷贝到服务器上。运行的时候出现./backend: error while loading shared libraries: libmysqlclient.so原创 2014-02-27 15:55:28 · 44199 阅读 · 0 评论 -
MiniGUI的介绍及安装
1. 介绍 MiniGUI是一个针对嵌入式设备的高级窗口系统,,图形用户界面支持系统。能够支持包含Linux在内的多种操作系统,例如uClinux、VxWorks、eCos、uC/OS-II、pSOS、ThreadX、Nucleus、OSE等,也可以在win32平台上运行。MiniGUI为应用程序定义了一组轻量级的窗口和图形设备接口。利用这些接口,每个应用程序可以建立多个窗口并在这些窗口中原创 2014-07-27 23:13:00 · 5118 阅读 · 1 评论 -
MiniGUI的三种运行模式
清理硬盘时发现有几篇2011年整理的博客躺在那里,删了怪可惜的,发上来保存一下~~年代久远,已经过时,仅作参考用途~~~原创 2014-07-27 23:19:27 · 7263 阅读 · 1 评论 -
MiniGUI实践之PhotoView
清理硬盘时发现有几篇2011年整理的博客躺在那里,删了怪可惜的,发上来保存一下~~年代久远,已经过时,仅作参考用途~~~原创 2014-07-27 23:26:25 · 6046 阅读 · 1 评论 -
MiniGUI的mListView研究
清理硬盘时发现有几篇2011年整理的博客躺在那里,删了怪可惜的,发上来保存一下~~年代久远,已经过时,仅作参考用途~~~原创 2014-07-27 23:34:29 · 1804 阅读 · 0 评论 -
Linux信号详解
转自:http://kenby.iteye.com/blog/1173862一 信号的种类可靠信号与不可靠信号, 实时信号与非实时信号可靠信号就是实时信号, 那些从UNIX系统继承过来的信号都是非可靠信号, 表现在信号不支持排队,信号可能会丢失, 比如发送多次相同的信号, 进程只能收到一次. 信号值小于SIGRTMIN的都是非可靠信号.转载 2013-06-25 13:21:26 · 614 阅读 · 0 评论 -
mysql导入后乱码
今天发现把某数据库导入到mysql后,web上出现了乱码,然后进入mysql里面查询的时候也是乱码。于是搜了一下mysql的乱码相关的资料。试用了一下,http://linux.chinaunix.net/techdoc/database/2008/03/23/986386.shtml 这个文章中的方法,问题没有解决。后来使用了以下方法,问题得到解决:drop database原创 2013-06-14 18:43:13 · 704 阅读 · 0 评论 -
【资料】socket关闭close和shutdown
转自:http://hi.baidu.com/yoshubom/item/758f025d98df733e33e0a9adsocket关闭close和shutdownsocket关闭有2个close,shutdown他们之间的区别:close-----关闭本进程的socket id,但链接还是开着的,用这个socket id的其它进程还能用这个链接,能读或写这个so转载 2013-06-12 14:17:53 · 719 阅读 · 0 评论 -
一个数组分配大小的问题
这是写一个程序从文件中读取IP,MAC,client-hostname等信息时遇到的一个问题。DHCP服务器每分配一个地址,都有一条记录放在dhcpd.leases文件中,记录的格式类似为:lease 192.168.1.3 { starts 3 2012/07/04 07:51:55; ends 3 2012/07/04 09:51:55; cltt 3 2012/07/原创 2012-07-05 16:46:14 · 1091 阅读 · 0 评论 -
C程序获取shell脚本命令输出,使用popen()函数
C程序如果想要调用shell脚本,并获得脚本执行的结果,可以使用popen()函数。定义:FILE * popen(const char * command, const char * type);int pclose(FILE * stream);原理:popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启原创 2012-07-11 20:07:28 · 2297 阅读 · 0 评论 -
VC读取ini文件
Windows提供了几个可以读写ini文件的WINAPI1. GetPrivateProfileInt() //从私有初始化文件获取整形值2. GetPrivateProfileString() //从私有初始化文件获取字符串型值3. GetProfileInt() //从win.ini获取整数值4. GetProfileString() //从win.ini获取字符串值5.原创 2012-07-03 13:18:45 · 1862 阅读 · 0 评论 -
ubuntu的账户密码算法
OS:Ubuntu 11.04Compiler:gcc 4.5.2在/etc/shadow里,存放着系统账户密码的相关信息,文件格式如下:登录名:密文:最后一次修改密码时间:最小密码存活期:最长密码存活期:密码过期警告时间:密码失效时间:账户过期时间:保留字段再看加密后的密文,例如密码111111,加密后的密文为:$6$ehGch6YT$E.XZFji5NY6k原创 2012-08-16 17:44:32 · 1710 阅读 · 1 评论 -
CGI 环境变量
环境变量 意义SERVER_NAMECGI脚本运行时的主机名和IP地址.SERVER_SOFTWARE你的服务器的类型如: CERN/3.0 或 NCSA/1.3.GATEWAY_INTERFACE运行的CGI版本. 对于UNIX服务器, 这是CGI/1.1.SERVER_PROTOCOL服务器运行的H转载 2012-09-16 22:22:27 · 330 阅读 · 0 评论 -
qsort 用法
qsort函数是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分法写的,其时间复杂度是n*log(n),其结构为:void qsort( void*buffer, size_t count, size_t size, int (*compare)(constvoid*, constvoid*) );参数:*buffer 为要排序的数组count 为要转载 2012-09-19 15:55:44 · 366 阅读 · 0 评论 -
设置vim缩进
记录一下,免得又忘了打开vimrc配置文件,添加这句autocmd FileType c,cpp set shiftwidth=4 | set tabstop=4 | set cin注:tabstop tab符等同的空格长度shiftwidth 自动缩进时的空格长度softtabstop tabstop和shiftwidth设置长度不一样时可用(tab符与空原创 2012-10-31 10:12:16 · 397 阅读 · 0 评论 -
kzalloc()
kzalloc()是kmalloc()和memset()函数的整合kzalloc()直接替代了kmalloc()申请空间,然后用memset()初始化空间,貌似效率更高一些/** * kzalloc - allocate memory. The memory is set to zero. * @size: how many bytes of memory are requir原创 2012-10-31 12:13:13 · 1509 阅读 · 0 评论 -
模块Makefile模板
obj-m:=模块名.o模块名-objs:=所有目标文件名#内核头文件目录KDIR:=/lib/modules/$(shell uname -r)/build#源代码目录PWD:=$(shell pwd)all: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modulesclean: rm -f *.o *.ko *.cmd.* *.m原创 2012-10-31 10:35:57 · 405 阅读 · 0 评论 -
proc一个很好的例子
出处:http://blog.youkuaiyun.com/iczyh/article/details/3206249#include #include #include static struct proc_dir_entry *mydir;static struct proc_dir_entry *pfile;static char msg[255];static in转载 2012-11-12 16:29:38 · 921 阅读 · 0 评论 -
网络程序中常用的头文件
出处: http://www.aka.org.cn/Lectures/002/Lecture-2.1.8/Lecture-2.1.8/new_page_4.htmsocket编程中需要用到的头文件sys/types.h:数据类型定义sys/socket.h:提供socket函数及数据结构netinet/in.h:定义数据结构sockaddr_inarpa/inet.h:转载 2012-11-18 21:46:29 · 614 阅读 · 0 评论 -
wpa_supplicant软件架构分析
转自:http://blog.youkuaiyun.com/fxfzz/article/details/61764141. 启动命令wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下:wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplica转载 2012-12-06 17:02:21 · 568 阅读 · 0 评论 -
Unable to handle kernel paging request at virtual address 的解决办法
转自:http://blog.youkuaiyun.com/warmshepherd/article/details/3245247今天想正式开始编写各底层硬件的驱动程序,首先是双口RAM的,结果吓一一大跳,居然出现如下这么多的问题,这就是传说中的oops消息:root@WK:mknod -m 600 /dev/dram_driver c 221 1root@WK:./dram转载 2013-01-02 20:12:51 · 1964 阅读 · 0 评论 -
版本号定义规则
转自:http://blog.donews.com/glassyang/archive/2006/10/24/1066467.aspx这个靠谱完全的版本号定义,分三项::..,如 1.0.0。版本号升级原则:主版本号:功能模块有大的变动,比如增加多个模块或者整体架构发生变化。次版本号:和主版本相对而言,次版本号的升级对应的只是局部转载 2013-01-24 17:13:33 · 1189 阅读 · 0 评论 -
ralink nvram API
需要引用 libnvram 库。。。 -lnvram-I/home/xxx/RT288x_SDK/source/lib/libnvram-L/home/xxx/RT288x_SDK/source/romfs/lib里面的API有:nvram_init:nvram_get:nvram_bufget:nvram_set:nvram_bufset:nvram_原创 2013-01-14 16:04:22 · 5150 阅读 · 0 评论 -
浮点数的比较
在数学运算当中经常会涉及到判断两个数是否相等的情况 对于整数很好处理 A==B这样的一个语句就可以解决全部的问题 但是对于浮点数是不同的 首先,浮点数在计算机当中的二进制表达方式就决定了大多数浮点数都是无法精确的表达的 现在的计算机大部分都是数字计算机,不是模拟机,数字机的离散化的数据表示方法自然无法精确表达大部分的数据量的。 其次计算机浮点数的精度在单精度float类转载 2013-03-24 23:17:09 · 499 阅读 · 0 评论 -
warning: function declaration isn't a prototype 解决方法
写内核模块的时候,函数声明时,如果没有形参,需要加void原创 2013-05-30 17:04:35 · 1071 阅读 · 0 评论 -
MiniGUI的帧缓冲、图形引擎及输入引擎
清理硬盘时发现有几篇2011年整理的博客躺在那里,删了怪可惜的,发上来保存一下~~年代久远,已经过时,仅作参考用途~~~帧缓冲、图形引擎及输入引擎 FrameBuffer:帧缓冲是一种驱动程序接口。FrameBuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过FrameBuffer的读写直接对显存进行操作。用户可以将FrameBuffer看成是显示内存的一原创 2014-07-27 23:17:09 · 3946 阅读 · 0 评论