自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 2594 2

原创 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 980

原创 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 1585

原创 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 1351

原创 使用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 1705

原创 使用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 1750

原创 使用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 771

原创 用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 1031

原创 内存分配

#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 936

原创 用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 3671 1

原创 理解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 1377

原创 检查打开的文件是不是ELF格式的文件,提取“特别”的节中的信息

//检查打开的文件是不是ELF格式的文件//检验ELF头//获得节头表的地址//遍历节头表,依次查看一个节的属性,从节头字符串表中找到其名称,如果名称和“特别”的section名匹配,则找到此节的地址//提取“特别”的节中的信息 //显示上面提取的信息#include#include#include#includeint main(int argc,char

2014-09-12 08:47:45 1441 1

原创 检查打开的文件是不是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 991

原创 检查打开的文件是不是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 864

原创 检查打开的文件是不是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 956

原创 Multiboot规范

一个启动载入器/OS映像接口主要是三个方面:1          由启动载入器看到的一个OS映像的格式。2          当启动载入器启动一个操作系统时,机器的状态。3          由启动载入器传递给操作系统的信息的格式。3.1.      OS映像的格式一个OS映像可能是一个,对于这个特定的操作系统而言,标准格式的普通32位可执行文件,除了它可能被链到一个非缺省的载

2014-09-10 10:44:32 3248

原创 内核启动过程

具体要求如下:Grub的源码分析:Grub如何支持多个系统和内核的启动选择(MultiBoot机制)。一.GRUB 简介(介绍主流的系统管理程序grub)什么是GRUB;GNU GRUB 是一个多重操作系统启动管理器。GNU GRUB 是由GRUB(GRand Unified Bootloader) 派生而来。GRUB 最初由Erich Stefan Boleyn 设计和应

2014-09-10 10:42:35 1437

原创 linux内核模块依赖图

Module                  Size  Used bybtrfs                 880032  0 raid6_pq               97812  1 btrfsxor                    21411  1 btrfsufs                    74837  0 qnx4           

2014-09-04 10:44:41 2307

原创 Linux内核编译过程的优化

原始内核编译安装内核模块的编译环境一、 下载新内核的源代码 (负责人:王东升)目前,在Internet上提供Linux源代码的站点有很多,读者可以选择一个速度较快的站点下载。本人是从站点www.kernel.org上下载了Linux的开发版内核3.14.17的源代码,全部代码被压缩到一个名叫Linux-3.14.17.tar.gz的文件中。二、 释放内核源代码 (负责人:赵培)

2014-09-03 14:38:41 1281

原创 安装内核模块的编译环境

安装内核模块的编译环境一、 下载新内核的源代码 目前,在Internet上提供Linux源代码的站点有很多,读者可以选择一个速度较快的站点下载。本人是从站点www.kernel.org上下载了Linux的开发版内核3.14.17的源代码,全部代码被压缩到一个名叫Linux-3.14.17.tar.gz的文件中。二、 释放内核源代码 由于源代码放在一个压缩文件中,因此在配置内核之前,

2014-09-03 08:46:54 890

原创 第一章-任务1:Linux内核的重新编译,安装,重启

1.1 相关知识 Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统。内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制。Linux内核的一大特点就是采用了整体式结构,有很多过程组成,每个过程都可以独立编译,其模块机制又湿得内核保持独立而又易于扩充。Linux发行版是在Linux内核的基础之上,与外带的应用软件和工具打包配置之后发行的版本。最初的Li

2014-09-02 13:18:37 892

原创 列出指定目录下与正则表达式”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 1670

原创 列出指定目录下与正则表达式”*.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 1162

原创 列出指定目录下后缀是.mp3的所有文件

知识点:使用opendir和readdir函数来获得指定目录下文件的文件名称。代码:

2014-06-14 18:43:44 905

原创 删除指定目录下的某个普通文件

描述:先判断指定目录下是否存在该文件,如果不存在,则返回错误。如果存在,那么调用unlink函数或remove函数来删除。 要求:将文件的绝对路径和文件名做输入参数,打印信息表明是否删除成功。 知识点:int unlink(const char * pathname)#include int remove(const char * pathname)#include

2014-06-14 18:40:17 526

原创 在指定目录下删除一个空目录

要求:给出指定目录和要删除的子目录名做输入参数,打印信息表明是否删除成功。判断要删除的目录是否存在于指定目录下,如果存在,则再判断该目录是否为空。知识点:删除目录函数:int rmdir(const char *pathname)#include

2014-06-14 18:35:18 940

原创 在指定目录下创建一个新目录

要求:给出指定目录和要新建的子目录名做输入参数,打印信息表明是否创建成功。首先判断指定目录下是否已存在要创建的目录,如果已存在,则不必再创建。知识点:创建目录函数:int mkdir(const char *pathname,mode_t mode)#include  #include #include

2014-06-14 18:29:51 9045

原创 列出指定目录下属于给定用户的所有文件

要求:给定目录路径和用户名作为输入参数,打印输出该目录下属于该用户的所有文件名。 知识点: struct passwd * getpwnam(const char * name)  #include    #include getpwnam()用来逐一搜索参数name 指定的账号名称,找到时便将该用户的数据以passwd结构返回。如果返回NULL 则表示已无

2014-06-14 18:23:38 781

原创 列出指定目录下所有可被其他用户执行的文件

知识点: 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 566

原创 列出指定目录下在过去一小时内被修改的文件

要求:可在子任务9的基础上完成,输出该路径下所有当前时刻起前一小时内被修改的文件及其对应的最后被修改时间。知识点:使用time函数获得当前的时间:time_t time(time_t *t)#include此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。

2014-06-14 18:15:18 1604 4

原创 列出指定目录下所有文件的最后被修改时间

要求:输入指定目录路径,输出该路径下所有文件及其对应的最后被修改时间。知识点:在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间。int stat(const char *restrict pathname, struct stat *restrict buf)通过stat结构体中的成员变量st_mtime可以获得文件的最后被修改时间

2014-06-14 18:09:33 1582

原创 递归列出指定目录下所有的普通文件

要求:打印输出指定目录下所有普通文件,若文件为子目录,则递归搜索子目录下的普通文件。知识点:普通文件(Regular File)。指普通意义上的文件,如数据文件、可执行文件等。与其他类型的文件区别开来。int stat(const char *restrict pathname, struct stat *restrict buf) 宏定义S_ISREG (st_mode)判断是否为普通文件。

2014-06-14 17:51:46 1444

原创 递归列出指定目录下所有的符号链接文件

要求:打印输出指定目录下所有符号链接文件,若文件为子目录,则递归搜索子目录下的符号链接文件。知识点: int lstat(const char *restrict pathname, struct stat *restrict buf) #include #include  函数说明 lstat()与stat()作用完全相同,都是取得参数file_name所指的文件状

2014-06-14 17:49:42 1272

原创 搜索指定目录下是否存在某个文件

描述:搜索指定目录下是否存在某个文件,如果存在,则输出该文件的绝对路径要求:指定目录路径与待搜索文件名作为输入参数,打印输出搜素结果信息。如果判断文件是目录文件,则需要递归进行搜索知识点:DIR* opendir (const char * path )  struct dirent *readdir(DIR *dir)根据dirent结构体中获得的文件的文件名,来判断是否是要搜素

2014-06-14 17:46:56 1017

原创 递归列出指定目录下的所有文件的绝对路径

#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 1456

原创 递归列出指定目录下的所有文件名

知识点:递归函数:一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数)递归就是在过程或函数里调用自身在使用递增归策略时,必须有一个明确的递归结束条件在判断文件是目录文件后,递归调用函数遍历该子目录

2014-06-14 15:33:59 1021

原创 列出指定目录下的所有文件的绝对路径

要求:指定目录路径做输入参数,打印输出该路径下所有文件的绝对路径使用非递归方式 知识点:绝对路径由指定目录的绝对路径加上文件的相对路径得到 使用sprintf()创建绝对路径int sprintf( char *buffer, const char *format, [ argument] … )buffer:char型指针,指向将要写入的字符串的缓冲区。format:

2014-06-14 15:31:33 3102 1

原创 列出指定目录下所有文件名

要求:绝对路径名做输入参数,打印输出该路径下所有文件名 知识点:打开目录函数:DIR* opendir (const char * path )读取目录函数:struct dirent *readdir(DIR *dir)返回下一个目录项的指针。#include   #include

2014-06-14 15:27:46 1009

原创 判断文件是否是目录文件

描述:给出一个文件的绝对路径,判断该文件是否是目录文件要求:将文件的绝对路径做输入参数,打印信息表明该文件是否为目录 知识点:获取文件的属性int stat(const char *restrict pathname, struct stat *restrict buf) #include  #include

2014-06-14 15:23:35 862

原创 文件的删除

要求:输入要删除的文件名,输出是否删除成功的信息。知识点:int remove(const char *filename)参数: filename: 要删除的文件的名称返回值:一旦成功,则返回0,否则,返回-1头文件:stdio.h

2014-06-14 15:18:18 437

用c语言完成一个双向链表的创建,插入,删除

这是一个关于双链表的创建,删除,插入操作

2014-09-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除