- 博客(58)
- 资源 (5)
- 收藏
- 关注
原创 fork父子进程共享
fork之后,子进程会拷贝父进程的数据空间、堆和栈空间(实际上是采用写时复制技术),二者共享代码段。所以在子进程中修改全局变量(局部变量,分配在堆上的内存同样也是)后,父进程的相同的全局变量不会改变。
2014-07-07 23:40:16
6476
转载 Ubuntu 安装 Cscope 和 Ctags
一、安装Cscope 软件点击此处下载Cscope软件。tar -jxvf cscope-15.7a.tar.bz2cd cscope-15.7a./configuremakesudo make install安装过程出现的问题:1.出现`flex' is missing on your system:sudo apt-get ins
2013-06-15 15:31:05
1537
转载 VIM和GVIM 配置总结
1.前言关于如何VIM的配置,网上已经有很多相关教程,详细的教程只会是重复,本文仅介绍本人的配置心得和觉得需要注意的地方。详细可以教程可以参考http://blog.youkuaiyun.com/wooin2.VI、VIM与GVIM的区别VIM是VI的升级版,且完全兼容VI指令,GVIM跟VIM的区别是VIM要求全部键盘操作,而GVIM可以使用鼠标进行可视化操作。关于GVIM与VIM,
2013-06-07 23:34:40
927
原创 网络分析工具
1. http://wiki.wireshark.org/Tools2. http://nmap.org/nping/3. an open-source, cross-platform packet generator/analyzer - Ostinatohttp://ostinato.googlecode.com/4. http://www.colaso
2013-05-13 22:38:26
787
原创 vimr配置
" Source a global configuration file if availableif filereadable("/etc/vim/vimrc.local") source /etc/vim/vimrc.localendifset nocompatible "去掉vi一致性模式set autoread "文件被改动时自
2013-05-06 23:13:45
999
原创 vim 笔记一
注意:Linux、MAC下的全局目录是在/usr/vim/share/vim目录中,我们为每个用户或者为自己的用户单独配置一个,可以这样做:debian:~# cp /usr/share/vim/vimrc ~/.vimrcdebian:~# vim ~/.vimrc然后直接编辑这个文件就行了,在当前用户的根目录,名字叫.vimrcVim中有三类模式,正常模式(normal
2013-05-06 22:18:51
721
转载 把Vim改装成一个IDE编程环境(图文) -- 续1
By:吴垠Date:2007-12-27Email:lazy.fox.wu#gmail.comHomepage:http://blog.youkuaiyun.com/wooinCopyright:该文章版权由吴垠和他可爱的老婆小包子所有。可在非商业目的下任意传播和复制。对
2013-05-02 21:02:02
594
转载 把Vim改装成一个IDE编程环境(图文)
By:吴垠Date:2007-09-07Version:0.5Email:lazy.fox.wu#gmail.comHomepage:http://blog.youkuaiyun.com/wooinCopyright:该文章版权由吴垠和他可爱的老婆小包子所有。可在非商业目的下任意传播和复制。对于商业目的下对本文的任何行
2013-05-02 20:57:47
768
转载 linux下解压命令大全
.tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压:tar zxvf
2013-05-02 19:58:30
706
转载 linux驱动学习路线
Linux系统目前主要维护2.4和2.6两个内核版本,在http://www.kernel.org/ 网站上已经可以下载到最新的2.6内核linux-2.6.38.6,及最新的2.4内核linux-2.4.37.11。稳定版本号基本上是1~3月更新一次,如:2.6.35至2.6.36,升级版本号每1~2周更新一次,如:2.6.35.1至2.6.35.2。升级后的高版本内核并不完全兼容低版本内核,所
2013-03-17 16:08:49
3810
转载 linux 静态库的链接 undefined reference
在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(.o) 测试代码如下: 然后
2013-01-06 22:47:54
661
原创 C语言:0, '0', '\0', NULL 区别
'0'代表字符0,对应ascii码为48;‘\0’字符串结束符,对应的ascii码为0,所以while(*a++ != '\0')与while(*a** != 0)等价;NULL定义为(void *) 0,它是一个指针,指向一个地址为0的值,用于指针比较。
2012-12-09 18:57:58
637
转载 scull工作过程
1. Linux启动时运行加载驱动模块的脚本。脚本首先做insmod。insmod时会调用驱动模块的init函数。在init 中,进行了一些与设备本身相关的初始化设置以后(比如scull需要分配内存空间),会调用cdev_init()和cdev_add()来进行字符设备的初始化,并把这个设备添加进系统。这个过程会创建/proc/modules、/proc/devices两个文件和/sy
2012-11-25 15:11:04
618
原创 linux驱动学习4:scull驱动
要点:学习ioctl()驱动编写,如何传入命令来控制硬件。1)ioctl知识用户空间的ioctl()调用如下:int ioctl(int fd, unsigned long cmd, …);2)驱动中ioctl:Int (*ioctl) (struct inode *inode, struct file *filp, unsigned int cmd, un
2012-11-25 15:06:35
1074
原创 linux驱动学习3:实现一简单完整驱动(包括open,read,write,ioctl)
目的:将内核内存的一块作为字符设备,用户可通过这些调用来读写这段内存。总结:1、设备号主设备号标识设备对应的驱动程序,次设备号由内核使用,用于确定设备文件所指的设备。通过次设备号获得一个指向内核设备的直接指针,也可将此设备号当作设备本地数组的索引。设备编号用dev_t表示(linux/types.h 32位,其中12位表示主设备号,20位表示次设备号)。由dev_t获得主
2012-11-25 15:05:33
22065
1
原创 linux驱动学习2:运行hello模块
1) 在/home/yj/kernel中建立2个文件:hello.c makefileHello.c#include #include MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void){ printk(KERN_ALERT "Hello, Yangj
2012-11-25 15:02:08
1109
转载 linux驱动—ioctl
Ioctl设备控制大部分驱动除了需要具备读写设备的能力外,还需要具备对硬件控制的能力。例如,要求设备报告错误信息,改变波特率,这些操作常常通过ioctl方法来完成用户使用方法在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd, unsigned long cmd, ...)原型中的点表示这是一个可选的参数,存在与否依赖于控制命令(第2个
2012-11-24 09:55:29
4923
转载 linux驱动简单实例
基础知识: 不同于windows驱动程序,Linux设备驱动程序在与硬件设备之间建立了标准的抽象接口。通过这个接口,用户可以像处理普通文件一样,通过open,close,read,write等系统调用对设备进行操作,如此一来也大大简化了linux驱动程序的开发,后面会看到,通过file_operations这个结构体(实际上是一个函数指针的集合),把驱动的操作和设备号联系起来,程序
2012-11-23 16:03:44
2367
转载 Wireshark基本介绍和学习TCP三次握手
转自http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html阅读目录wireshark介绍wireshark不能做的wireshark VS Fiddler同类的其他工具什么人会用到wiresharkwireshark 开始抓包wireshark 窗口介绍wireshark 显示过
2012-11-23 15:10:51
6183
转载 HTTP协议详解
转http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容
2012-11-23 14:53:23
989
原创 驱动开发学习路径
1、编写hello模块,学会基本的流程,能看到输出;2、写一完整驱动, 加上read, write, ioctl, polling等各种函数的驱动实现,在ioctl里完成从用户空间向内核空间传递结构体的实现。3、 写一block驱动, 加上read,write,ioctl,poll等各种函数实现。4、简单学习下内存管理, 这个是最难的,明白各种memory alloc的函数实现细节。这
2012-11-20 15:04:28
788
原创 Need to write down something
I have been finding a job for around one month, with several offers in hand. It is really hard to decide which job I should take. I have to take a lot of elements to account, like salary, working pla
2012-10-25 22:50:33
616
原创 找出图中的所有连通子图(创建图的邻接表,深度优先遍历查找子图)
/* 利用深度优先遍历,找出图中的所有连通图(子图) * 图用邻接表表示 *graph[], 利用边的信息来创建adjacency lists */#include#include#define MAXVERTICES 20#define MAXEDGES 20typedef enum { FALSE, TRUE, TRISTATE} bool;typede
2012-08-08 14:44:06
8821
原创 图深度优先遍历(递归和栈实现)
/* depth-first traversal * two methods: recursive and non-recursive * Graph is stored in an adjacency matrix */#include#include#define MAX 10int sp = 0;//stack pointerint stack[MAX];/***
2012-08-07 11:09:49
10807
2
原创 内存分配算法-(首次分配法和最佳分配法)
/* implement a memory allocation scheme by using algorithms first-fit, next-fit, and best-fit * freelist为空闲区链表的头,它的下一个节点才指向空闲缓冲区 * freelist是按首地址来排序的,而不是按size来排序。按首地址排序便于相邻空闲内存合并;按size大小来排序,便于分配内存 *
2012-08-06 20:49:55
7057
原创 统计输入中所有单词出现的次数(使用二叉查找树实现:递归和非递归)
/*@function:统计输入中的所有单词出现的次数 * @method: 使用二叉查找树。对输入的单词建立一颗二叉查找树,新输入的单词若存在于树中,则增加该节点的计数值;否则,新增一个节点 */#include#include#include#include#define MAXWORD 100typedef struct tnode{ char word[MAXW
2012-08-05 16:22:38
1393
原创 统计输入中关键词出现的次数(二分查找实现)
/* 统计输入的c语言中关键词出现的次数 * @method: 使用二分查找实现,keytab[]关键词必须是按首字母排好序的关键词表 */#include#include#include#includestruct key{ char *word; int count;} keytab[] = { "char", 0, "int", 0, "vo
2012-08-05 14:51:40
1143
原创 堆排序
#include#includevoid swap(int *x, int *y){ int temp; temp = *x; *x = *y; *y = temp;}/* ajust position of i-th node *//* 不断的将i与其子节点比较,将i放入正确的位置 */void adjust(int list[], int i, int n){ i
2012-08-04 21:40:08
424
原创 summary
Time flies, and a week has past. Kyle gave me the advice that i needed to do more coding. So i made up my mind to write more code, and reviewed some algorithms and knowledge about data structure.
2012-08-03 21:00:00
356
原创 二叉查找树
/* binary search tree * 1. Any node in the left subtree is less than the root; * 2. Any node in the right subtree is greater than the root; * 3. if we traverse a binary search tree in inorder, we
2012-08-03 20:48:54
405
原创 binary tree(basic operation)
/** @author: yj * time: 2012/4 * usage: basic function for binary tree */ #include "tree.h"#include #include /** create binary tree parameters: none return: head
2012-08-03 11:09:02
463
原创 优先队列(链表实现)
插入时需要按照优先级从高到低排序,一般操作系统的任务队列调度会用到/* 优先队列(链表实现) * front 为队头指针(链表头节点) * rear 为队尾指针 */#include#includetypedef struct list_t{ int _element; int _priority; struct list_t *_next;}list_t;/*
2012-08-03 10:44:25
1761
原创 队列(链表实现)
/* 链表队列 * front 为队头指针(链表头节点) * rear 为队尾指针 */#include#includetypedef struct list_t{ int _element; struct list_t *_next;}list_t;/* 要改变一个变量的值,需要传入变量的地址作参数; * 要改变一个指针的值,需要传入该指针的地址作参数(即指针的指针);
2012-08-03 09:45:11
374
转载 从问题看本质:socket到底是什么?
一、问题的引入——socket的引入是为了解决不同计算机间进程间通信的问题1.socket与进程的关系1).socket与进程间的关系:socket 用来让一个进程和其他的进程互通信息(IPC),而Socket接口是TCP/IP网络的API接口函数。2).进程间通信(本机内)进程间通信(不同计算机,要联网)2、socket与文件的关系——如何理解so
2012-08-02 22:09:57
664
转载 void及void指针含义的深刻解析
void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范 ①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如: int *pint; void *pvoid; pvoid = pint; /* 不过不能 pint = pvoid; */
2012-08-02 22:09:07
448
转载 va_list、va_start、va_arg、va_end的原理与使用 (转)
概述由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数目的问题进行讨论.定义大家先看几宏.在VC++6.0的include有一个stdarg.h头文件,有如下几个宏定义:#define _INTSIZEOF(n) ((sizeof(
2012-08-02 22:07:09
394
转载 内存对齐 _INTSIZEOF(n)
问:#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )说能够在某些系统中内存对齐.(估计是得到一个2 或者4的整数倍)这个好象就是(x+3)&~3这样就能满足对齐了吗?请从数学上给说说.谢谢答(作者:win_hate):对于两个正整数 x, n 总存在整数 q, r 使得
2012-08-02 22:06:12
920
转载 linux常用的基本命令
一些常用的基本命令: uname -a 查看内核版本 ls -al 显示所有文件的属性 pwd 显示当前路径 cd - 返回上一次目录 cd ~ 返回主目录 date s 设置时间、日期 cal 显示日历 cal 2006 bc 计算器具 man & info 帮助手册 locale 显示当前字体 locale -a 所有可用字体 /etc/sysconfig/
2012-08-02 22:04:30
567
原创 ubuntu10.10 搭建arm开发环境——minicom设置
1. 在终端中输入sudo minicom -s以启动minicom配置:………………………………[configuration]………………………………………………………… Filename and paths ……………………………………………… File transfer and protocols ……………………………………………… Serial port setup ……
2012-08-02 22:03:12
616
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人