- 博客(81)
- 资源 (1)
- 收藏
- 关注
原创 利用netfilter机制,实现内核防火墙把http请求和回应的数据包截获后,解释出其中的http层数据
#include#include#include#include#include#include#include#include#includeunsigned int change(int aChar,int hex){ int ch; ch = aChar - hex; return ch;}unsigned cha
2014-11-04 12:44:50
2685
原创 linux自旋锁
#include#include#include#include#includestatic int i=0,j=100;struct task_struct *MyThread1=NULL;struct task_struct *MyThread2=NULL;static int myVar = 0;static int count = 0;spinloc
2014-09-30 10:46:20
1035
原创 linux读写锁
#include#include#include#include#includestatic int i=0,j=100;//一个线程从0开始加,一个线程从100开始加struct task_struct *MyThread1=NULL;//线程1struct task_struct *MyThread2=NULL;//线程2static int myVar = 0
2014-09-30 10:44:53
1629
原创 linux顺序锁
#include#include#include#include#include#include//顺序锁头文件static int i=0,j=100;//一个线程从0开始加,一个线程从100开始加struct task_struct *MyThread1=NULL;//线程1struct task_struct *MyThread2=NULL;//线程2st
2014-09-30 10:43:37
1403
原创 使用malloc分别分配2KB的空间,然后用realloc调整为6KB、1MB、3MB、10MB空间,并且将这五块内存分别用“A”、“B”、“C”、“D”、“E”填充
#include#include#include #includeint main(void) { char *str1 = NULL; char *str2 = NULL; char *str3 = NULL; char *str4 = NULL; char *str5 = NULL; str1 = (char*)
2014-09-18 13:28:38
1740
原创 使用malloc分别分配2KB,6KB的内存空间,打印指针地址
#include#include#include #includeint main(void) { int *str1 = NULL; int *str2 = NULL; str1 = (int*)malloc(2*1024*sizeof(char)); str2 = (int*)malloc(6*1024*sizeof(char))
2014-09-18 13:26:15
1855
原创 使用malloc分别分配2KB的空间,然后用realloc调整为6KB的内存空间,打印指针地址
#include#include#include #includeint main(void) { int *str1 = NULL; int *str2 = NULL; str1 = (int*)malloc(2*1024*sizeof(char)); if(str1==NULL) { printf("m
2014-09-18 13:25:20
799
原创 用calloc分配10块大小为4字节的内存空间,打印指针地址,并且打印出内存中的内容
#include#include#include int main(void) { int i; int *str = NULL; str = (int*)calloc(10, sizeof(int)); if(str==NULL) { printf("calloc error!\n");
2014-09-18 13:23:23
1064
原创 内存分配
#include #include #include #include #include using namespace std;#define MAX_ORDER 11map> process_info;struct page{ struct page *lru;};struct list_head{ struct pa
2014-09-17 11:53:49
966
原创 用c语言完成一个双向链表的创建,插入,删除
/*dlist.h*/ #ifndef DList_H #define DList_H typedef int Item; typedef struct Node * PNode; //节点指针 typedef PNode Position; //节点位置 /*定义节点类型*/ typedef struct
2014-09-13 08:38:03
3718
原创 理解start_kernel中函数语句的作用
asmlinkage void __init start_kernel(void){ char * command_line; extern const struct kernel_param __start___param[], __stop___param[]; /*这两个变量为地址指针,指向内核启动参数处理相关结构体段在内存中的位置(虚拟地址)。
2014-09-12 14:47:38
1443
原创 检查打开的文件是不是ELF格式的文件,提取“特别”的节中的信息
//检查打开的文件是不是ELF格式的文件//检验ELF头//获得节头表的地址//遍历节头表,依次查看一个节的属性,从节头字符串表中找到其名称,如果名称和“特别”的section名匹配,则找到此节的地址//提取“特别”的节中的信息 //显示上面提取的信息#include#include#include#includeint main(int argc,char
2014-09-12 08:47:45
1499
原创 检查打开的文件是不是ELF格式的文件,如果是就输出节头字符串表的地址,并依次输出各节的名称,字符串
#include "elf.h"#include int main(int argc, char *argv[]){ FILE *fp; int i = 0; int fd = 0; Elf64_Ehdr ehdr; if ((fp=fopen(argv[1],"r"))==NULL) {
2014-09-12 08:46:31
1028
原创 检查打开的文件是不是ELF格式的文件,如果是就输出节头表表項的数目,各表項指向的节的地址
#include "elf.h"#include int main(int argc, char *argv[]){ FILE *fp; int i = 0; int fd = 0; Elf64_Ehdr ehdr; if ((fp=fopen(argv[1],"r"))==NULL) {
2014-09-12 08:42:18
898
原创 检查打开的文件是不是ELF格式的文件,如果是就输出节头表的文件偏移
#include #include #include #include #include #include #include #include "elf.h" #define FALSE 0#define TURE 1#define MAX_SIZE 52#define Elf_Ehdr Elf64_Ehdrint OpenElf(char *fi
2014-09-12 08:38:01
1011
原创 Multiboot规范
一个启动载入器/OS映像接口主要是三个方面:1 由启动载入器看到的一个OS映像的格式。2 当启动载入器启动一个操作系统时,机器的状态。3 由启动载入器传递给操作系统的信息的格式。3.1. OS映像的格式一个OS映像可能是一个,对于这个特定的操作系统而言,标准格式的普通32位可执行文件,除了它可能被链到一个非缺省的载
2014-09-10 10:44:32
3353
原创 内核启动过程
具体要求如下:Grub的源码分析:Grub如何支持多个系统和内核的启动选择(MultiBoot机制)。一.GRUB 简介(介绍主流的系统管理程序grub)什么是GRUB;GNU GRUB 是一个多重操作系统启动管理器。GNU GRUB 是由GRUB(GRand Unified Bootloader) 派生而来。GRUB 最初由Erich Stefan Boleyn 设计和应
2014-09-10 10:42:35
1516
原创 linux内核模块依赖图
Module Size Used bybtrfs 880032 0 raid6_pq 97812 1 btrfsxor 21411 1 btrfsufs 74837 0 qnx4
2014-09-04 10:44:41
2386
原创 Linux内核编译过程的优化
原始内核编译安装内核模块的编译环境一、 下载新内核的源代码 (负责人:王东升)目前,在Internet上提供Linux源代码的站点有很多,读者可以选择一个速度较快的站点下载。本人是从站点www.kernel.org上下载了Linux的开发版内核3.14.17的源代码,全部代码被压缩到一个名叫Linux-3.14.17.tar.gz的文件中。二、 释放内核源代码 (负责人:赵培)
2014-09-03 14:38:41
1388
原创 安装内核模块的编译环境
安装内核模块的编译环境一、 下载新内核的源代码 目前,在Internet上提供Linux源代码的站点有很多,读者可以选择一个速度较快的站点下载。本人是从站点www.kernel.org上下载了Linux的开发版内核3.14.17的源代码,全部代码被压缩到一个名叫Linux-3.14.17.tar.gz的文件中。二、 释放内核源代码 由于源代码放在一个压缩文件中,因此在配置内核之前,
2014-09-03 08:46:54
935
原创 第一章-任务1:Linux内核的重新编译,安装,重启
1.1 相关知识 Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统。内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制。Linux内核的一大特点就是采用了整体式结构,有很多过程组成,每个过程都可以独立编译,其模块机制又湿得内核保持独立而又易于扩充。Linux发行版是在Linux内核的基础之上,与外带的应用软件和工具打包配置之后发行的版本。最初的Li
2014-09-02 13:18:37
934
原创 列出指定目录下与正则表达式”abc*”匹配的所有文件
#include#include#include#include#include#include#include#define MAX 1024int dir_run(char *path,char *str){ DIR *dir; struct stat st; struct dirent *entry,*en;
2014-06-14 18:49:50
1763
原创 列出指定目录下与正则表达式”*.sh”匹配的所有文件
#include#include#include#include#include#include#include#define MAX 1024int dir_run(char *path,char *str){ DIR *dir; struct stat st; struct dirent *entry,*en; c
2014-06-14 18:46:56
1196
原创 删除指定目录下的某个普通文件
描述:先判断指定目录下是否存在该文件,如果不存在,则返回错误。如果存在,那么调用unlink函数或remove函数来删除。 要求:将文件的绝对路径和文件名做输入参数,打印信息表明是否删除成功。 知识点:int unlink(const char * pathname)#include int remove(const char * pathname)#include
2014-06-14 18:40:17
552
原创 在指定目录下删除一个空目录
要求:给出指定目录和要删除的子目录名做输入参数,打印信息表明是否删除成功。判断要删除的目录是否存在于指定目录下,如果存在,则再判断该目录是否为空。知识点:删除目录函数:int rmdir(const char *pathname)#include
2014-06-14 18:35:18
976
原创 在指定目录下创建一个新目录
要求:给出指定目录和要新建的子目录名做输入参数,打印信息表明是否创建成功。首先判断指定目录下是否已存在要创建的目录,如果已存在,则不必再创建。知识点:创建目录函数:int mkdir(const char *pathname,mode_t mode)#include #include #include
2014-06-14 18:29:51
9282
原创 列出指定目录下属于给定用户的所有文件
要求:给定目录路径和用户名作为输入参数,打印输出该目录下属于该用户的所有文件名。 知识点: struct passwd * getpwnam(const char * name) #include #include getpwnam()用来逐一搜索参数name 指定的账号名称,找到时便将该用户的数据以passwd结构返回。如果返回NULL 则表示已无
2014-06-14 18:23:38
816
原创 列出指定目录下所有可被其他用户执行的文件
知识点: stat中的st_mode中包含了文件的访问权限位,共有9个:S_IRUSR: 用户读 S_IWUSR: 用户写 S_IXUSR: 用户执行S_IRGRP: 组成员读S_IWGRP: 组成员写S_IXGRP: 组成员执行S_IROTH: 其他用户读S_IWOTH: 其他用户写S_IXOTH: 其他用户执行使用st_mode & S_IXOTH 可以获得文件的其
2014-06-14 18:19:52
604
原创 列出指定目录下在过去一小时内被修改的文件
要求:可在子任务9的基础上完成,输出该路径下所有当前时刻起前一小时内被修改的文件及其对应的最后被修改时间。知识点:使用time函数获得当前的时间:time_t time(time_t *t)#include此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。
2014-06-14 18:15:18
1655
4
原创 列出指定目录下所有文件的最后被修改时间
要求:输入指定目录路径,输出该路径下所有文件及其对应的最后被修改时间。知识点:在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间。int stat(const char *restrict pathname, struct stat *restrict buf)通过stat结构体中的成员变量st_mtime可以获得文件的最后被修改时间
2014-06-14 18:09:33
1640
原创 递归列出指定目录下所有的普通文件
要求:打印输出指定目录下所有普通文件,若文件为子目录,则递归搜索子目录下的普通文件。知识点:普通文件(Regular File)。指普通意义上的文件,如数据文件、可执行文件等。与其他类型的文件区别开来。int stat(const char *restrict pathname, struct stat *restrict buf) 宏定义S_ISREG (st_mode)判断是否为普通文件。
2014-06-14 17:51:46
1487
原创 递归列出指定目录下所有的符号链接文件
要求:打印输出指定目录下所有符号链接文件,若文件为子目录,则递归搜索子目录下的符号链接文件。知识点: int lstat(const char *restrict pathname, struct stat *restrict buf) #include #include 函数说明 lstat()与stat()作用完全相同,都是取得参数file_name所指的文件状
2014-06-14 17:49:42
1324
原创 搜索指定目录下是否存在某个文件
描述:搜索指定目录下是否存在某个文件,如果存在,则输出该文件的绝对路径要求:指定目录路径与待搜索文件名作为输入参数,打印输出搜素结果信息。如果判断文件是目录文件,则需要递归进行搜索知识点:DIR* opendir (const char * path ) struct dirent *readdir(DIR *dir)根据dirent结构体中获得的文件的文件名,来判断是否是要搜素
2014-06-14 17:46:56
1064
原创 递归列出指定目录下的所有文件的绝对路径
#include#include#include#include#include#include#include#define SIZE 1024int dir_run(char *path){ DIR *dir; dir = opendir(path); if (dir == NULL) {
2014-06-14 17:42:22
1516
原创 递归列出指定目录下的所有文件名
知识点:递归函数:一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数)递归就是在过程或函数里调用自身在使用递增归策略时,必须有一个明确的递归结束条件在判断文件是目录文件后,递归调用函数遍历该子目录
2014-06-14 15:33:59
1082
原创 列出指定目录下的所有文件的绝对路径
要求:指定目录路径做输入参数,打印输出该路径下所有文件的绝对路径使用非递归方式 知识点:绝对路径由指定目录的绝对路径加上文件的相对路径得到 使用sprintf()创建绝对路径int sprintf( char *buffer, const char *format, [ argument] … )buffer:char型指针,指向将要写入的字符串的缓冲区。format:
2014-06-14 15:31:33
3184
1
原创 列出指定目录下所有文件名
要求:绝对路径名做输入参数,打印输出该路径下所有文件名 知识点:打开目录函数:DIR* opendir (const char * path )读取目录函数:struct dirent *readdir(DIR *dir)返回下一个目录项的指针。#include #include
2014-06-14 15:27:46
1078
原创 判断文件是否是目录文件
描述:给出一个文件的绝对路径,判断该文件是否是目录文件要求:将文件的绝对路径做输入参数,打印信息表明该文件是否为目录 知识点:获取文件的属性int stat(const char *restrict pathname, struct stat *restrict buf) #include #include
2014-06-14 15:23:35
906
原创 文件的删除
要求:输入要删除的文件名,输出是否删除成功的信息。知识点:int remove(const char *filename)参数: filename: 要删除的文件的名称返回值:一旦成功,则返回0,否则,返回-1头文件:stdio.h
2014-06-14 15:18:18
495
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人