上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 26 下一页
摘要: 零长度是指定义数组时,指定其长度为0(如int arr[0];),这样的数组不占用实际的空间,但能通过数组名访问到其指向的地址。如下例所示: #include <stdlib.h>#include <stdio.h>struct device{int num;int count; int reserve[0]; /* * reserve是一个数组名;该数组没有元素;该数组的其实地址紧随结... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 1. 内核符号表 内核符号表是linux内核提供给内核代码的一部分引用,所指的“内核代码”包括内核以及驱动程序等运行在内核内存空间的程序,“引用”包括对变量的引用,对函数的引用等。最常见的内核符号引用如printk打印输出,通常内核符号是由一部分内核代码提供给其他内核代码访问其内部数据的接口。 外部模块只能使用内核或其他外部模块导出的符号。内核或外部模块可通过EXPORT_SYMBOL宏导出符... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(1175) 评论(0) 推荐(0) 编辑
摘要: 方法1:修改系统调用表(适用于linux-2.4内核) 内核使用sys_call_table数组来存储系统调用表,将系统调用号与系统调用处理函数对应起来,通过修改sys_call_table数组的某一个元素,即可实现截获系统调用的功能,在2.4内核中,sys_call_table符号是被导出的,外部模块可以使用,故能简单的实现截获系统调用,在加载模块时,修改sys_call_table的处理函数... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 在不同的操作系统中,换行符的存储方式不同,如linux系统以\n表示,而Mac OS以\r表示,windows系统则以\r\n表示,而C语言中,换行则以\n表示,故在不同的操作系统下用C语言读取文本文件时,需要做相应的处理,本文主要介绍windows系统下的处理。 1. 检查文件是否以文本模式打开,如果不是则不需要做特殊处理; 2. 循环依次读取文件中的字符,按以下规则对字符进行处理,直到读... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(2041) 评论(0) 推荐(0) 编辑
摘要: http://blog.chinaunix.net/u2/87570/showart_2048930.html介绍了如何编写守护进程,其实linux提供了将进城在后台运行的函数daemon。#include <unistd.h>int daemon(int nochdir, int noclose);1. daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。2. 当nochdir为0时,daemon将更改进城的根目录为root(“/”)。3. 当noclose为0是,daemon将进城的STDIN, STDOUT, STDERR都重定向到/dev/null。 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(628) 评论(0) 推荐(0) 编辑
摘要: fuse提供两种类型的操作接口,fuse lowlevel operations类似于内核文件系统的接口,以inode号作为访问的关键字,而更高级的fuse operations则提供以路径名作为关键字的访问形式,这样即使fuse用户对内核文件系统并不了解,也能编写文件系统程序。高级的接口,其实是对fuse lowlevel operations的一个封装(相当于实现了一个用户空间文件系统fuse_fs,但其数据都放在内存中),它实现了一组lowlevel operations,并通过hash表来组织目录项,实现inode关键字向路径名关键字的转换(逆向路径名查找,索引节点中需要记录父节点的n 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(3414) 评论(0) 推荐(0) 编辑
摘要: Linux系统的系统调用通过设置全局errno来标示错误类型http://blog.chinaunix.net/u2/87570/showart_2137607.html,并通过perror,sperror函数提供对errno的解析。而我们平时写程序的错误处理方式类似于下面的代码:if ( p == NULL ){ printf ( "ERR: The pointer is NULL\n" );}if(socket(PF_INET, SOCK_STREAM, 0) < 0) {printf(“create socket errr\n”);}这种方式虽然没什么问题,但其 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 2010级新生存储知识培训PPT 祝各位师弟师妹学有所成! 管理员在2009年8月13日编辑了该文章文章。 --> --> 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(116) 评论(0) 推荐(0) 编辑
摘要: Linux系统下一切都是文件,可以像使用普通文件一样使用设备,可直接操作设备扇区内容,这种方式不经过文件系统。 #include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <libgen.h>#include <unistd.h>st... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 常量指针与指针常量直接从语义上理解,看const限定那个范围。const int *p 其中的const在*p之前,也就是说*p是常量,不能改变。同样int *const p 其中的const在p之前,所以p是常量,不能改变。位段的符号structtest{inta:2;/*表示范围-2~1 */unsignedintb:2;/*表示范围0-3 */};intmain(){structtestt;... 阅读全文
posted @ 2013-04-19 14:07 ydzhang 阅读(121) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 26 下一页