自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (60)
  • 收藏
  • 关注

转载 __attribute__ ((packed)) 的作用 用法

详细英文解释 http://www.unixwiz.net/techtips/gnu-c-attributes.html为了编写可以在不同平台之间可移植的数据项的数据结构,除了规定特定的字节序以外,还应该始终强制数据项的自然对齐。 自然对齐(Natural Alignment)是指在数据项大小的整数倍(例如,8字节数据项存入8的整数倍的地址)的地址处存储数据项。 强制自

2015-12-03 10:31:51 798

转载 服务器进程为何通常fork()两次

首先,要了解什么叫僵尸进程,什么叫孤儿进程,以及服务器进程运行所需要的一些条件。两次fork()就是为了解决这些相关的问题而出现的一种编程方法。孤儿进程孤儿进程是指父进程在子进程结束之前死亡(return 或exit)。如下图所示:但是孤儿进程并不会像上面画的那样持续很长时间,当系统发现孤儿进程时,init进程就收养孤儿进程,成为它的父亲,child

2015-01-16 15:54:38 547

转载 freeDiameter源码阅读之消息队列和消息处理流程

http://gmd20.blog.163.com/blog/static/1684392320133312333840/fifo消息队列的定义和基本操作=============include/freeDiameter/libfdproto.h-----------/** FUNCTION: fd_fifo_post** PARAMETERS:* qu

2015-01-14 11:14:15 1105

转载 freeDiameter源码阅读之 Extensions 的实现

http://gmd20.blog.163.com/blog/static/168439232013335813447//* List of extensions to load, from the configuration parsing */struct fd_ext_info {struct fd_list chain;/* link in the list

2015-01-14 11:13:20 1371

转载 freeDiameter源码阅读之 dictionary树和消息的合法性检查(rule)

http://gmd20.blog.163.com/blog/static/168439232013381193653/freediameter里面预先使用c的描述结构,构建全局的avp dictionary树。extensions 下面很多 dict开头的模块都是用于提供各种协议的avp的定义的。运行时可以选择需要的模块加载。加载完成之后,一个dictionary树就建好

2015-01-14 11:12:10 1315

转载 flex和bison的用于加载和解析配置文件(参考freeDiameter用法)

http://gmd20.blog.163.com/blog/static/16843923201331664345310/  freeDiameter的主配置文件还有那些extension的配置文件,都是用flex 和bison来做解析的。 估计那个作者很熟悉flex和bison吧,当然通过flex 和bision也可以做到很复杂的规则吧。不过有杀鸡用牛刀的感觉。   

2015-01-14 11:11:11 3365

转载 freeDiameter源码阅读之消息路由

http://gmd20.blog.163.com/blog/static/16843923201362942742371/DiameterBaseProtocolhttp://tools.ietf.org/html/rfc6733里面定义详细的消息的路由的处理过程,定义了RelayAgents,ProxyAgents,RedirectAgent

2015-01-14 11:09:27 1654

转载 修改freeDiameter的dbg_monitor插件为把状态写到独立文件

原帖 http://gmd20.blog.163.com/blog/static/168439232014274246264//********************************************************************************************************** Software License Agre

2015-01-14 10:37:02 872

转载 Gateway GPRS support node (GGSN) 相关资料

GPRS core networkhttp://en.wikipedia.org/wiki/GPRS_core_network这篇文章有对GPRS(general packet radio service )的结构和 GGSN的功能和接口有所介绍。GGSN 主要是连接外部IP网络和内部SGSN的关键部分。根据上篇文章要实现的结构有。GiIP ba

2015-01-14 10:35:27 447

转载 常用面试算法

1 //输入一颗二叉树,输出它的镜像(每个节点的左右子节点交换位置)void TreeClass(NodeT* root){ if( root==NULL || (root->left==NULL && root->right==NULL) ) return; NodeT* tmpNode=root->left; root->left=root-

2015-01-13 14:36:38 442

转载 linux signal 用法和注意事项

http://blog.chinaunix.net/uid-9354-id-2425031.html所以希望能用相同方式处理信号的多次出现,最好用sigaction.信号只出现并处理一次,可以用signal.signal函数每次设置具体的信号处理函数(非SIG_IGN)只能生效一次,每次在进程响应处理信号时,随即将信号处理函数恢复为默认处理方式.所以如果想多次相同方式处

2015-01-06 13:36:55 3548

原创 time_t tm timeval 和 时间字符串的转换

1、常用的时间存储方式    1)time_t类型,这本质上是一个长整数,表示从1970-01-01 00:00:00到目前计时时间的秒数,如果需要更精确一点的,可以使用timeval精确到毫秒。    2)tm结构,这本质上是一个结构体,里面包含了各时间字段    struct tm {          int tm_sec;     /* seconds afte

2014-08-28 16:01:10 16511

转载 红帽 没有注册 不能 yum

红帽中出现This system is not registered with RHN这个的原因是因为红帽中没有注册RHN。解决办法:(假定你已安装yum,且网络畅通)更改yum的源,即更换/etc/yum.repos.d /rhel-debuginfo.repo 这个文件。进入/etc/yum.repos.d/目录,终端中输入wget http://docs.linuxtone.

2014-07-25 18:01:40 1050

转载 史上最经典的Linux内核学习方法论

待到山花烂漫时,还是那些经典在微笑。  有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验。首先是5本久经考验的神作(个人概括为“2+1+2”,第一个2是指2本全面讲 解内核的书,中间的1指1本讲解驱动开发的书,后面的2则指2本有关内核具体子系统的书,你是否想到了某某广告里三个人突然站起单臂齐举高呼“1比1 比 1”的场景?)。  《Linux内核设计与实现》

2014-03-19 13:20:50 479

原创 PF_RING-5.4.5 与 PF_RING-5.6.0 版本区别

pfring_open 失败 报 WrongRING version: kernel is 14, libpfring was compiled with 15;说明   应用程序的libpfring.a 库版本 高于 pf_ring.ko 版本。 发生不兼容现象。  我在PF_RING-5.6.0 就发现了 这种问题 。 最后改成 PF_RING-5.4.5 版本 问题解决。

2014-03-18 12:10:51 993

转载 VMWare下虚拟机ubuntu 和 windows文件共享

来源:http://hi.baidu.com/appcn/blog/item/43c4eafce7888042d6887df9.html1 如果按装好了 vmware tools;我们知道,在安装vmware过程中,比较新的vm版本可能会帮我们安装好了vmware,具体的表现就是:安装完vmware之后,鼠标可以在虚拟机和宿主机之间自由切换,而不需要按ctrl+alt。一般

2014-02-23 21:24:01 1067

转载 C Static 和 Const 区别

static 的两大作用:一、控制存储方式:  static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。  1、引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义

2014-02-20 17:07:34 615

原创 有用博客

http://blog.csdn.net/21aspnet

2013-06-07 00:04:37 498

debian 技术文档

debian 操作指南 学习debian发行版的学习材料

2013-09-10

linux系统编程+中文版

linux系统编程+中文版

2013-09-03

linux 原始套接字 编程

linux 原始套接字 编程

2013-09-01

Linux内核网络部分源码分析-唐文

Linux内核网络部分源码分析-唐文

2013-08-28

TCPIP协议内核源码分析 不错的

TCPIP协议内核源码分析

2013-08-28

linux下面proc编程经典教程

linux下面proc连接oracle书籍库,经典教程。 附带仿照sqlplus的源代码 绝对经典,两部曲

2013-08-28

使用 proc 文件系统来访问 Linux 内核的内容使用

使用 proc 文件系统来访问 Linux 内核的内容使用

2013-08-28

shell编程入门到精通和 Unix shell 编程 的第三版 你懂得

shell编程入门到精通和 Unix shell 编程 的第三版 你懂得

2013-08-23

MFC 多线程 在csdn上比较全的资料额

MFC 多线程 在csdn上比较全的资料额

2013-08-23

Linux netfilter机制分析.pdf

Netfilter源码分析(定稿),对于Netfilter源代码的解析 Netfilter源码分析(定稿),对于Netfilter源代码的解析 内容基本上来自两篇文章: 《Netfilter 源码分析》—(独孤九贱 http://www.skynet.org.cn/index.php) 《Linux Netfilter 实现机制和扩展技术》——(杨沙洲 国防科技大学计算机学院)

2013-08-22

Windows应用程序捆绑核心编程

Windows应用程序捆绑核心编程

2013-08-21

Linux网络编程 宋敬彬 孙海滨 源代码 看好了 经典的网络编程

目 录 第1篇 Linux网络开发基础 第1章 Linux操作系统概述 2 1.1 Linux发展历史 2 1.1.1 Linux的诞生和发展 2 1.1.2 Linux名称的由来 3 1.2 Linux的发展要素 3 1.2.1 UNIX操作系统 4 1.2.2 Minix操作系统 4 1.2.3 POSIX 标准 4 1.3 Linux与UNIX的异同 5 1.4 操作系统类型选择和内核版本的选择 5 1.4.1 常见的不同发行的Linux异同 6 1.4.2 内核版本的选择 6 1.5 Linux的系统架构 7 1.5.1 Linux内核的主要模块 7 1.5.2 Linux的文件结构 9 1.6 GNU通用公共许可证 10 1.6.1 GPL许可证的历史 10 1.6.2 GPL的自由理念 10 1.6.3 GPL的基本条款 11 1.6.4 关于GPL许可证的争议 12 1.7 Linux软件开发的可借鉴之处 12 1.8 小结 13 第2章 Linux编程环境 14 2.1 Linux环境下的编辑器 14 2.1.1 vim使用简介 14 2.1.2 使用vim建立文件 15 2.1.3 使用vim编辑文本 16 2.1.4 vim的格式设置 18 2.1.5 vim配置文件.vimrc 19 2.1.6 使用其他编辑器 19 2.2 Linux下的GCC编译器工具集 19 2.2.1 GCC简介 19 2.2.2 编译程序的基本知识 21 2.2.3 单个文件编译成执行文件 22 2.2.4 编译生成目标文件 22 2.2.5 多文件编译 23 2.2.6 预处理 24 2.2.7 编译成汇编语言 24 2.2.8 生成和使用静态链接库 25 2.2.9 生成动态链接库 26 2.2.10 动态加载库 29 2.2.11 GCC常用选项 31 2.2.12 编译环境的搭建 33 2.3 Makefile文件简介 34 2.3.1 一个多文件的工程例子 34 2.3.2 多文件工程的编译 36 2.3.3 Makefile的规则 37 2.3.4 Makefile中使用变量 39 2.3.5 搜索路径 43 2.3.6 自动推导规则 44 2.3.7 递归make 44 2.3.8 Makefile中的函数 46 2.4 用GDB调试程序 47 2.4.1 编译可调试程序 48 2.4.2 使用GDB调试程序 49 2.4.3 GDB常用命令 52 2.4.4 其他的GDB 59 2.5 小结 60 第3章 文件系统简介 61 3.1 Linux下的文件系统 61 3.1.1 Linux下文件的内涵 61 3.1.2 文件系统的创建 62 3.1.3 挂接文件系统 64 3.1.4 索引节点inode 65 3.1.5 普通文件 66 3.1.6 设备文件 66 3.1.7 虚拟文件系统VFS 68 3.2 文件的通用操作方法 72 3.2.1 文件描述符 72 3.2.2 打开创建文件open()、create()函数 72 3.2.3 关闭文件close()函数 76 3.2.4 读取文件read()函数 77 3.2.5 写文件write()函数 79 3.2.6 文件偏移lseek()函数 80 3.2.7 获得文件状态fstat()函数 83 3.2.8 文件空间映射mmap()函数 85 3.2.9 文件属性fcntl()函数 88 3.2.10 文件输入输出控制ioctl()函数 92 3.3 socket文件类型 93 3.4 小结 93 第4章 程序、进程和线程 94 4.1 程序、进程和线程的概念 94 4.1.1 程序和进程的差别 94 4.1.2 Linux环境下的进程 95 4.1.3 进程和线程 96 4.2 进程产生的方式 96 4.2.1 进程号 96 4.2.2 进程复制fork() 97 4.2.3 system()方式 98 4.2.4 进程执行exec()函数系列 99 4.2.5 所有用户态进程的产生进程init 100 4.3 进程间通信和同步 101 4.3.1 半双工管道 101 4.3.2 命名管道 107 4.3.3 消息队列 108 4.3.4 消息队列的一个例子 114 4.3.5 信号量 116 4.3.6 共享内存 121 4.3.7 信号 124 4.4 Linux下的线程 127 4.4.1 多线程编程实例 127 4.4.2 Linux下线程创建函数pthread_create() 129 4.4.3 线程的结束函数pthread_join()和pthread_exit() 129 4.4.4 线程的属性 130 4.4.5 线程间的互斥 132 4.4.6 线程中使用信号量 133 4.5 小结 136 第2篇 Linux用户层网络编程 第5章 TCP/IP协议族简介 138 5.1 OSI网络分层介绍 138 5.1.1 OSI网络分层结构 138 5.1.2 OSI的7层网络结构 139 5.1.3 OSI参考模型中的数据传输 140 5.2 TCP/IP协议栈 141 5.2.1 TCP/IP协议栈参考模型 141 5.2.2 到网络层协议 143 5.2.3 IP协议 144 5.2.4 网际控制报文协议(ICMP) 146 5.2.5 传输控制协议(TCP) 150 5.2.6 用户数据报文协议(UDP) 154 5.2.7 地址解析协议(ARP) 156 5.3 IP地址分类与TCP/UDP端口 158 5.3.1 因特网中IP地址的分类 159 5.3.2 子网掩码(subnet mask address) 161 5.3.3 IP地址的配置 162 5.3.4 端口 163 5.4 字节序和网络字节序 163 5.4.1 字节序的含义 164 5.4.2 网络字节序的转换 164 5.5 小结 166 第6章 应用层网络服务程序简介 167 6.1 HTTP协议和服务 167 6.1.1 HTTP协议概述 167 6.1.2 HTTP协议的基本过程 168 6.2 FTP协议和服务 170 6.2.1 FTP协议概述 170 6.2.2 FTP协议的工作模式 172 6.2.3 FTP协议的传输方式 172 6.2.4 一个简单的FTP过程 173 6.2.5 常用的FTP工具 173 6.3 TELNET协议和服务 174 6.3.1 远程登录的基本概念 174 6.3.2 使用TELNET协议进行远程登录的工作过程 174 6.3.3 TELNET协议 174 6.4 NFS协议和服务 176 6.4.1 安装NFS服务器和客户端 176 6.4.2 服务器端的设定 176 6.4.3 客户端的操作 177 6.4.4 showmount命令 177 6.5 自定义网络服务 177 6.5.1 xinetd/inetd 178 6.5.2 xinetd服务配置 178 6.5.3 自定义网络服务 179 6.6 小结 180 第7章 TCP网络编程基础 181 7.1 套接字编程基础知识 181 7.1.1 套接字地址结构 181 7.1.2 用户层和内核层交互过程 183 7.2 TCP网络编程流程 184 7.2.1 TCP网络编程架构 184 7.2.2 创建网络插口函数socket() 186 7.2.3 绑定一个地址端口对bind() 189 7.2.4 监听本地端口listen 192 7.2.5 接受一个网络请求accept() 194 7.2.6 连接目标网络服务器connect() 199 7.2.7 写入数据函数write() 200 7.2.8 读取数据函数read() 201 7.2.9 关闭套接字函数close() 201 7.3 服务器/客户端的简单例子 202 7.3.1 例子功能描述 202 7.3.2 服务器网络程序 203 7.3.3 服务器读取和显示字符串 205 7.3.4 客户端的网络程序 205 7.3.5 客户端读取和显示字符串 206 7.3.6 编译运行程序 206 7.4 截取信号的例子 207 7.4.1 信号处理 207 7.4.2 信号SIGPIPE 208 7.4.3 信号SIGINT 208 7.5 小结 208 第8章 服务器和客户端信息的获取 210 8.1 字节序 210 8.1.1 大端字节序和小端字节序 210 8.1.2 字节序转换函数 212 8.1.3 一个字节序转换的例子 214 8.2 字符串IP地址和二进制IP地址的转换 217 8.2.1 inet_xxx()函数 217 8.2.2 inet_pton()和inet_ntop()函数 219 8.2.3 使用8.2.1节地址转换函数的例子 220 8.2.4 使用函数inet_pton()和函数inet_ntop()的例子 223 8.3 套接字描述符判定函数issockettype() 223 8.3.1 进行文件描述符判定的函数issockettype() 224 8.3.2 main()函数 224 8.4 IP地址与域名之间的相互转换 225 8.4.1 DNS原理 225 8.4.2 获取信息的函数 226 8.4.3 使用名获取信息的例子 228 8.4.4 函数gethostbyname()不可重入的例子 230 8.5 协议名称处理函数 232 8.5.1 xxxprotoxxx()函数 232 8.5.2 使用协议族函数的例子 233 8.6 小结 236 第9章 数据的IO和复用 237 9.1 IO函数 237 9.1.1 使用recv()函数接收数据 237 9.1.2 使用send()函数发送数据 239 9.1.3 使用readv()函数接收数据 240 9.1.4 使用writev()函数发送数据 240 9.1.5 使用recvmsg()函数接收数据 242 9.1.6 使用sendmsg()函数发送数据 244 9.1.7 IO函数的比较 246 9.2 使用IO函数的例子 246 9.2.1 客户端处理框架的例子 246 9.2.2 服务器端程序框架 248 9.2.3 使用recv()和send()函数 249 9.2.4 使用readv()和write()函数 251 9.2.5 使用recvmsg()和sendmsg()函数 253 9.3 IO模型 256 9.3.1 阻塞IO模型 256 9.3.2 非阻塞IO模型 257 9.3.3 IO复用 257 9.3.4 信号驱动IO模型 258 9.3.5 异步IO模型 258 9.4 select()函数和pselect()函数 259 9.4.1 select()函数 259 9.4.2 pselect()函数 261 9.5 poll()函数和ppoll()函数 262 9.5.1 poll()函数 263 9.5.2 ppoll()函数 264 9.6 非阻塞编程 264 9.6.1 非阻塞方式程序设计介绍 264 9.6.2 非阻塞程序设计的例子 264 9.7 小结 266 第10章 基于UDP协议的接收和发送 267 10.1 UDP编程框架 267 10.1.1 UDP编程框图 267 10.1.2 UDP服务器编程框架 269 10.1.3 UDP客户端编程框架 269 10.2 UDP协议程序设计的常用函数 270 10.2.1 建立套接字socket()和绑定套接字bind() 270 10.2.2 接收数据recvfrom()/recv() 270 10.2.3 发送数据sendto()/send() 275 10.3 UDP接收和发送数据的例子 279 10.3.1 UDP服务器端 279 10.3.2 UDP服务器端数据处理 280 10.3.3 UDP客户端 281 10.3.4 UDP客户端数据处理 281 10.3.5 测试UDP程序 282 10.4 UDP协议程序设计中的几个问题 282 10.4.1 UDP报文丢失数据 282 10.4.2 UDP数据发送中的乱序 284 10.4.3 UDP协议中的connect()函数 287 10.4.4 UDP缺乏流量控制 287 10.4.5 UDP协议中的外出网络接口 289 10.4.6 UDP协议中的数据报文截断 290 10.5 小结 291 第11章 高级套接字 292 11.1 UNIX域函数 292 11.1.1 UNIX域函数的地址结构 292 11.1.2 套接字函数 293 11.1.3 使用UNIX域函数进行套接字编程 293 11.1.4 传递文件描述符 296 11.1.5 socketpair()函数 296 11.1.6 传递文件描述符的例子 297 11.2 广播 302 11.2.1 广播的IP地址 302 11.2.2 广播与单播的比较 303 11.2.3 广播的示例 304 11.3 多播 310 11.3.1 多播的概念 310 11.3.2 广域网的多播 311 11.3.3 多播的编程 311 11.3.4 内核中的多播 313 11.3.5 一个多播例子的服务器端 317 11.3.6 一个多播例子的客户端 318 11.4 数据链路层访问 319 11.4.1 SOCK_PACKET类型 319 11.4.2 设置套接口以捕获链路帧的编程方法 320 11.4.3 从套接口读取链路帧的编程方法 321 11.4.4 定位IP包头的编程方法 322 11.4.5 定位TCP报头的编程方法 323 11.4.6 定位UDP报头的编程方法 325 11.4.7 定位应用层报文数据的编程方法 326 11.4.8 使用SOCK_PACKET编写ARP请求程序的例子 326 11.5 小结 329 第12章 套接字选项 330 12.1 获取和设置套接字选项getsocketopt()/setsocketopt() 330 12.1.1 getsockopt()函数和setsocketopt()函数的介绍 330 12.1.2 套接字选项 331 12.1.3 套接字选项简单示例 332 12.2 SOL_SOCKET协议族选项 336 12.2.1 SO_BROADCAST广播选项 336 12.2.2 SO_DEBUG调试选项 337 12.2.3 SO_DONTROUTE不经过路由选项 337 12.2.4 SO_ERROR错误选项 338 12.2.5 SO_KEEPALIVE保持连接选项 338 12.2.6 SO_LINGER缓冲区处理方式选项 339 12.2.7 SO_OOBINLINE带外数据处理方式选项 342 12.2.8 SO_RCVBUF和SO_SNDBUF缓冲区大小选项 342 12.2.9 SO_RCVLOWAT和SO_SNDLOWAT缓冲区下限选项 343 12.2.10 SO_RCVTIMEO和SO_SNDTIMEO收发超时选项 343 12.2.11 SO_REUSERADDR地址重用选项 344 12.2.12 SO_EXCLUSIVEADDRUSE端口独占选项 344 12.2.13 SO_TYPE套接字类型选项 345 12.2.14 SO_BSDCOMPAT与BSD套接字兼容选项 345 12.2.15 SO_BINDTODEVICE套接字网络接口绑定选项 345 12.2.16 SO_PRIORITY套接字优先级选项 346 12.3 IPPROTO_IP选项 347 12.3.1 IP_HDRINCL选项 347 12.3.2 IP_OPTNIOS选项 347 12.3.3 IP_TOS选项 347 12.3.4 IP_TTL选项 347 12.4 IPPROTO_TCP选项 348 12.4.1 TCP_KEEPALIVE选项 348 12.4.2 TCP_MAXRT选项 348 12.4.3 TCP_MAXSEG选项 349 12.4.4 TCP_NODELAY和TCP_CORK选项 349 12.5 使用套接字选项 351 12.5.1 设置和获取缓冲区大小 351 12.5.2 获取套接字类型的例子 355 12.5.3 使用套接字选项的综合例子 356 12.6 ioctl()函数 361 12.6.1 ioctl()函数的命令选项 361 12.6.2 ioctl()函数的IO请求 363 12.6.3 ioctl()函数的文件请求 365 12.6.4 ioctl()函数的网络接口请求 365 12.6.5 使用ioctl()函数对ARP高速缓存操作 372 12.6.6 使用ioctl()函数发送路由表请求 374 12.7 fcntl()函数 374 12.7.1 fcntl()函数的选项 375 12.7.2 使用fcntl()函数修改套接字非阻塞属性 375 12.7.3 使用fcntl()函数设置信号属主 376 12.8 小结 376 第13章 原始套接字 377 13.1 概述 377 13.2 原始套接字的创建 379 13.2.1 SOCK_RAW选项 379 13.2.2 IP_HDRINCL套接字选项 379 13.2.3 不需要bind()函数 380 13.3 原始套接字发送报文 380 13.4 原始套接字接收报文 380 13.5 原始套接字报文处理时的结构 381 13.5.1 IP头部的结构 381 13.5.2 ICMP头部结构 382 13.5.3 UDP头部结构 384 13.5.4 TCP头部结构 386 13.6 ping的例子 387 13.6.1 协议格式 388 13.6.2 校验和函数 389 13.6.3 设置ICMP发送报文的头部 390 13.6.4 剥离ICMP接受报文的头部 391 13.6.5 计算时间差 392 13.6.6 发送报文 393 13.6.7 接收报文 394 13.6.8 主函数过程 395 13.6.9 主函数main() 397 13.6.10 编译测试 400 13.7 洪水攻击 400 13.8 ICMP洪水攻击 401 13.8.1 ICMP洪水攻击的原理 401 13.8.2 ICMP洪水攻击的例子 401 13.9 UDP洪水攻击 405 13.10 SYN洪水攻击 409 13.10.1 SYN洪水攻击的原理 409 13.10.2 SYN洪水攻击的例子 409 13.11 小结 413 第14章 服务器模型选择 414 14.1 循环服务器 414 14.1.1 UDP循环服务器 414 14.1.2 TCP循环服务器 417 14.2 简单并发服务器 420 14.2.1 并发服务器的模型 420 14.2.2 UDP并发服务器 420 14.2.3 TCP并发服务器 423 14.3 TCP的高级并发服务器模型 426 14.3.1 单客户端单进程,统一accept() 426 14.3.2 单客户端单线程,统一accept() 429 14.3.3 单客户端单线程,各线程独自accept(),使用互斥锁 431 14.4 IO复用循环服务器 435 14.4.1 IO复用循环服务器模型介绍 435 14.4.2 IO复用循环服务器模型的例子 436 14.5 小结 440 第15章 IPv6简介 441 15.1 IPv4的缺陷 441 15.2 IPv6的特点 442 15.3 IPv6的地址 443 15.3.1 IPv6的单播地址 443 15.3.2 可聚集全球单播地址 443 15.3.3 本地使用单播地址 444 15.3.4 兼容性地址 445 15.3.5 IPv6多播地址 446 15.3.6 IPv6任播地址 446 15.3.7 的多个IPv6地址 447 15.4 IPv6的头部 447 15.4.1 IPv6头部格式 447 15.4.2 与IPv4头部的对比 448 15.4.3 IPv6的TCP头部 449 15.4.4 IPv6的UDP头部 449 15.4.5 IPv6的ICMP头部 449 15.5 IPv6运行环境 451 15.5.1 加载IPv6模块 451 15.5.2 查看是否支持IPv6 452 15.6 IPv6的结构定义 453 15.6.1 IPv6的地址族和协议族 453 15.6.2 套接字地址结构 453 15.6.3 地址兼容考虑 455 15.6.4 IPv6通用地址 455 15.7 IPv6的套接字函数 456 15.7.1 socket()函数 456 15.7.2 没有发生改变的函数 456 15.7.3 发生改变的函数 457 15.8 IPv6的套接字选项 457 15.8.1 IPv6的套接字选项 457 15.8.2 单播跳限IPV6_UNICAST_HOPS 459 15.8.3 发送和接收多播包 459 15.8.4 IPv6中获得时间戳的ioctl命令 460 15.9 IPv6的库函数 460 15.9.1 地址转换函数的差异 460 15.9.2 域名解析函数的差异 461 15.9.3 测试宏 463 15.10 IPv6的编程的一个简单例子 463 15.10.1 服务器程序 464 15.10.2 客户端程序 465 15.10.3 编译调试 467 15.11 小结 467 第3篇 Linux内核网络编程 第16章 Linux内核中网络部分结构以及分布 470 16.1 概述 470 16.1.1 代码目录分布 470 16.1.2 内核中网络部分流程简介 472 16.1.3 系统提供修改网络流程点 474 16.1.4 sk_buff结构 475 16.1.5 网络协议数据结构inet_protosw 478 16.2 软中断CPU报文队列及其处理 479 16.2.1 Linux内核网络协议层的层间传递手段——软中断 479 16.2.2 网络收发处理软中断的实现机制 481 16.3 socket数据如何在内核中接收和发送 482 16.3.1 socket()的初始化 482 16.3.2 接收网络数据recv() 482 16.3.3 发送网络数据send() 483 16.4 小结 484 第17章 netfilter框架内报文处理 485 17.1 netfilter 485 17.1.1 netfilter简介 485 17.1.2 netfilter框架 486 17.1.3 netfilter检查时的表格 487 17.1.4 netfilter的规则 487 17.2 iptables和netfilter 488 17.2.1 iptables简介 488 17.2.2 iptables的表和链 488 17.2.3 使用iptables设置过滤规则 489 17.3 内核模块编程 492 17.3.1 内核“Hello,World!”程序 492 17.3.2 内核模块的基本架构 494 17.3.3 内核模块加载和卸载过程 496 17.3.4 内核模块初始化和清理函数 497 17.3.5 内核模块初始化和清理过程的容错处理 497 17.3.6 内核模块编译所需的Makefile 498 17.4 5个钩子点 499 17.4.1 netfilter的5个钩子点 499 17.4.2 NF_HOOK宏 500 17.4.3 钩子的处理规则 501 17.5 注册/注销钩子 502 17.5.1 结构nf_hook_ops 502 17.5.2 注册钩子 503 17.5.3 注销钩子 504 17.5.4 注册注销函数 504 17.6 钩子的简单处理例子 505 17.6.1 功能描述 505 17.6.2 需求分析 506 17.6.3 ping回显屏蔽实现 506 17.6.4 禁止向目的IP地址发送数据的实现 506 17.6.5 端口关闭实现 506 17.6.6 动态配置实现 508 17.6.7 可加载内核实现代码 509 17.6.8 应用层测试代码实现 516 17.6.9 编译运行 516 17.7 一点多个钩子的优先级 517 17.8 校验和问题 518 17.9 小结 518 第4篇 综 合 案 例 第18章 一个简单Web服务器的例子SHTTPD 522 18.1 SHTTPD的需求分析 522 18.1.1 SHTTPD启动参数可动态配置的需求 523 18.1.2 SHTTPD的多客户端支持的需求 524 18.1.3 SHTTPD支持方法的需求 525 18.1.4 SHTTPD支持的HTTP协议版本的需求 526 18.1.5 SHTTPD支持头部的需求 527 18.1.6 SHTTPD定位URI的需求 527 18.1.7 SHTTPD支持CGI的需求 528 18.1.8 SHTTPD错误代码的需求 529 18.2 SHTTPD的模块分析和设计 530 18.2.1 SHTTPD的主函数 530 18.2.2 SHTTPD命令行解析的分析设计 531 18.2.3 SHTTPD配置文件解析的分析设计 532 18.2.4 SHTTPD的多客户端支持的分析设计 534 18.2.5 SHTTPD头部解析的分析设计 536 18.2.6 SHTTPD对URI的分析设计 537 18.2.7 SHTTPD支持方法的分析设计 537 18.2.8 SHTTPD支持CGI的分析设计 538 18.2.9 SHTTPD错误处理的分析设计 540 18.3 SHTTPD各模块的实现 542 18.3.1 SHTTPD命令行解析的实现 543 18.3.2 SHTTPD文件配置解析的实现 545 18.3.3 SHTTPD的多客户端支持的实现 547 18.3.4 SHTTPD所请求URI解析的实现 551 18.3.5 SHTTPD方法解析的实现 552 18.3.6 SHTTPD响应方法的实现 552 18.3.7 SHTTPD支持CGI的实现 556 18.3.8 SHTTPD支持HTTP协议版本的实现 559 18.3.9 SHTTPD内容类型的实现 559 18.3.10 SHTTPD错误处理的实现 561 18.3.11 SHTTPD生成目录下文件列表文件的实现 563 18.3.12 SHTTPD主函数的实现 565 18.4 SHTTPD的编译、调试和测试 566 18.4.1 建立源文件 566 18.4.2 制作Makefile 566 18.4.3 制作执行文件 567 18.4.4 使用不同的浏览器测试服务器程序 567 18.5 小结 568 第19章 一个简单网络协议栈的例子SIP 569 19.1 SIP网络协议栈的功能描述 569 19.1.1 SIP网络协议栈的基本功能描述 570 19.1.2 SIP网络协议栈的分层功能描述 570 19.1.3 SIP网络协议栈的用户接口功能描述 571 19.2 SIP网络协议栈的架构 571 19.3 SIP网络协议栈的存储区缓存 572 19.3.1 SIP存储缓冲的结构定义 573 19.3.2 SIP存储缓冲的处理函数 577 19.4 SIP网络协议栈的网络接口层 579 19.4.1 SIP网络接口层的架构 579 19.4.2 SIP网络接口层的数据结构 580 19.4.3 SIP网络接口层的初始化函数 581 19.4.4 SIP网络接口层的输入函数 583 19.4.5 SIP网络接口层的输出函数 586 19.5 SIP网络协议栈的ARP层 588 19.5.1 SIP地址解析层的架构 588 19.5.2 SIP地址解析层的数据结构 588 19.5.3 SIP地址解析层的映射表 590 19.5.4 SIP地址解析层的ARP映射表维护函数 591 19.5.5 SIP地址解析层的ARP网络报文构建函数 593 19.5.6 SIP地址解析层的ARP网络报文收发处理函数 595 19.6 SIP网络协议栈的IP层 598 19.6.1 SIP网际协议层的架构 598 19.6.2 SIP网际协议层的数据结构 599 19.6.3 SIP网际协议层的输入函数 601 19.6.4 SIP网际协议层的输出函数 605 19.6.5 SIP网际协议层的分片函数 606 19.6.6 SIP网际协议层的分片组装函数 607 19.7 SIP网络协议栈的ICMP层 611 19.7.1 SIP控制报文协议的数据结构 611 19.7.2 SIP控制报文协议的协议支持 612 19.7.3 SIP控制报文协议的输入函数 613 19.7.4 SIP控制报文协议的回显应答函数 614 19.8 SIP网络协议栈的UDP层 615 19.8.1 SIP数据报文层的数据结构 615 19.8.2 SIP数据报文层的控制单元 615 19.8.3 SIP数据报文层的输入函数 617 19.8.4 SIP数据报文层的输出函数 618 19.8.5 SIP数据报文层的建立函数 618 19.8.6 SIP数据报文层的释放函数 619 19.8.7 SIP数据报文层的绑定函数 620 19.8.8 SIP数据报文层的发送数据函数 621 19.8.9 SIP数据报文层的校验和计算 622 19.9 SIP网络协议栈的协议无关层 623 19.9.1 SIP协议无关层的系统架构 623 19.9.2 SIP协议无关层的函数形式 624 19.9.3 SIP协议无关层的接收数据函数 624 19.10 SIP网络协议栈的BSD接口层 625 19.10.1 SIP用户接口层的架构 625 19.10.2 SIP用户接口层的套接字建立函数 626 19.10.3 SIP用户接口层的套接字关闭函数 627 19.10.4 SIP用户接口层的套接字绑定函数 627 19.10.5 SIP用户接口层的套接字连接函数 628 19.10.6 SIP用户接口层的套接字接收数据函数 628 19.10.7 SIP用户接口层的发送数据函数 629 19.11 SIP网络协议栈的编译 630 19.11.1 SIP的文件结构 630 19.11.2 SIP的Makefile 631 19.11.3 SIP的编译运行 631 19.12 小结 631 第20章 一个简单防火墙的例子SIPFW 633 20.1 SIPFW防火墙的功能描述 633 20.1.1 SIPFW防火墙对进行网络数据过滤的功能描述 633 20.1.2 SIPFW防火墙用户设置防火墙规则的功能描述 634 20.1.3 SIPFW防火墙配置文件等附加功能的功能描述 634 20.2 SIPFW需求分析 634 20.2.1 SIPFW防火墙条件和动作 635 20.2.2 SIPFW防火墙支持过滤的类型和内容 635 20.2.3 SIPFW防火墙过滤的方式和动作 638 20.2.4 SIPFW防火墙的配置文件 640 20.2.5 SIPFW防火墙命令行配置格式 640 20.2.6 SIPFW防火墙的规则文件格式 642 20.2.7 SIPFW防火墙的日志文件数据格式 643 20.2.8 SIPFW防火墙构建所采用的技术方案 644 20.3 使用netlink进行用户空间和内核空间数据交互 645 20.3.1 netlink的用户空间程序设计 645 20.3.2 netlink的内核空间API 648 20.4 使用proc进行内存数据用户空间映射 650 20.4.1 proc虚拟文件系统的结构 650 20.4.2 创建proc虚拟文件 651 20.4.3 删除proc虚拟文件 652 20.4.4 proc文件的写函数 652 20.4.5 proc文件的读函数 653 20.5 内核空间的文件操作函数 654 20.5.1 内核空间的文件结构 654 20.5.2 内核空间的文件建立操作 655 20.5.3 内核空间的文件读写操作 656 20.5.4 内核空间的文件关闭操作 657 20.6 SIPFW防火墙的模块分析和设计 657 20.6.1 SIPFW防火墙的总体架构 657 20.6.2 SIPFW防火墙的用户命令解析 660 20.6.3 SIPFW用户空间与内核空间的交互 663 20.6.4 SIPFW防火墙内核链上的规则处理 666 20.6.5 SIPFW防火墙的PROC虚拟文件系统 668 20.6.6 SIPFW防火墙的配置文件和日志文件处理 669 20.6.7 SIPFW防火墙的过滤模块设计 671 20.7 SIPFW防火墙各功能模块的实现 673 20.7.1 SIPFW防火墙的命令解析代码 674 20.7.2 SIPFW防火墙的过滤规则解析模块代码 678 20.7.3 SIPFW防火墙的网络数据拦截模块代码 680 20.7.4 SIPFW防火墙的PROC虚拟文件系统 681 20.7.5 SIPFW防火墙对配置文件的解析 683 20.7.6 SIPFW防火墙内核模块初始化和退出 684 20.7.7 用户空间处理主函数 685 20.8 编译、调试和测试 686 20.8.1 用户程序和内核程序的Makefile 686 20.8.2 编译及运行 687 20.8.3 下发过滤规则,测试过滤结果 688 20.9 小结 690

2013-08-15

Linux嵌入编程详解

第1章 Linux快速入门 1 1.1 嵌入式Linux基础 1 1.1.1 Linux发展概述 1 1.1.2 Linux作为嵌入式操作系统的优势 2 1.1.3 Linux发行版本 3 1.1.4 如何学习Linux 4 1.2 Linux安装 5 1.2.1 基础概念 5 1.2.2 硬件需求 7 1.2.3 安装准备 7 1.2.4 安装过程 8 1.3 Linux文件及文件系统 11 1.3.1 文件类型及文件属性 11 1.3.2 文件系统类型介绍 13 1.3.3 Linux目录结构 14 1.4 实验内容——安装Linux操作系统 17 本章小结 17 思考与练习 18 第2章 Linux基础命令 19 2.1 Linux常用操作命令 19 2.1.1 用户系统相关命令 20 2.1.2 文件目录相关命令 27 2.1.3 压缩打包相关命令 38 2.1.4 比较合并文件相关命令 40 2.1.5 网络相关命令 45 2.2 Linux启动过程详解 50 2.2.1 概述 51 2.2.2 内核引导阶段 51 2.2.3 init阶段 52 2.3 Linux系统服务 54 2.3.1 独立运行的服务 55 2.3.2 xinetd设定的服务 56 2.3.3 设定服务命令常用方法 56 2.4 实验内容 57 2.4.1 在Linux下解压常见软件 57 2.4.2 定制Linux系统服务 58 本章小结 60 思考与练习 60 第3章 Linux下的C编程基础 61 3.1 Linux下C语言编程概述 61 3.1.1 C语言简单回顾 61 3.1.2 Linux下C语言编程环境概述 62 3.2 进入Vi 63 3.2.1 Vi的模式 63 3.2.2 Vi的基本流程 63 3.2.3 Vi的各模式功能键 65 3.3 初探Emacs 66 3.3.1 Emacs的基本操作 67 3.3.2 Emacs的编译概述 70 3.4 Gcc编译器 71 3.4.1 Gcc编译流程解析 71 3.4.2 Gcc编译选项分析 74 3.5 Gdb调试器 77 3.5.1 Gdb使用流程 78 3.5.2 Gdb基本命令 81 3.6 Make工程管理器 86 3.6.1 Makefile基本结构 86 3.6.2 Makefile变量 87 3.6.3 Makefile规则 90 3.6.4 Make管理器的使用 91 3.7 使用autotools 92 3.7.1 autotools使用流程 92 3.7.2 使用autotools所生成的Makefile 96 3.8 实验内容 98 3.8.1 Vi使用练习 98 3.8.2 用Gdb调试有问题的程序 99 3.8.3 编写包含多文件的Makefile 101 3.8.4 使用autotools生成包含多文件的Makefile 103 本章小结 105 思考与练习 105 第4章 嵌入式系统基础 106 4.1 嵌入式系统概述 106 4.1.1 嵌入式系统简介 106 4.1.2 嵌入式系统发展历史 107 4.1.3 嵌入式系统的特点 108 4.1.4 嵌入式系统的体系结构 108 4.1.5 几种主流嵌入式操作系统分析 109 4.2 ARM处理器硬件开发平台 111 4.2.1 ARM处理器简介 111 4.2.2 ARM体系结构简介 113 4.2.3 ARM9体系结构 113 4.2.4 S3C2410处理器详解 116 4.3 嵌入式软件开发流程 121 4.3.1 嵌入式系统开发概述 121 4.3.2 嵌入式软件开发概述 122 4.4 实验内容——使用JTAG烧写NAND Flash 128 本章小结 131 思考与练习 132 第5章 嵌入式Linux开发环境的搭建 133 5.1 嵌入式开发环境的搭建 133 5.1.1 嵌入式交叉编译环境的搭建 133 5.1.2 超级终端和Minicom配置及使用 135 5.1.3 下载映像到开发板 142 5.1.4 编译嵌入式Linux内核 145 5.1.5 Linux内核目录结构 149 5.1.6 制作文件系统 149 5.2 U-Boot移植 153 5.2.1 Bootloader介绍 153 5.2.2 U-Boot概述 155 5.2.3 U-Boot源码导读 156 5.2.4 U-Boot移植主要步骤 163 5.2.5 U-Boot常见命令 164 5.3 实验内容——移植Linux内核 164 本章小结 165 思考与练习 165 第6章 文件I/O编程 166 6.1 Linux系统调用及用户编程接口(API) 166 6.1.1 系统调用 166 6.1.2 用户编程接口(API) 167 6.1.3 系统命令 167 6.2 Linux中文件及文件描述符概述 168 6.3 不带缓存的文件I/O操作 168 6.3.1 open和close 168 6.3.2 read、write和lseek 170 6.3.3 fcntl 173 6.3.4 select 178 6.4 嵌入式Linux串口应用开发 183 6.4.1 串口概述 183 6.4.2 串口设置详解 184 6.4.3 串口使用详解 191 6.5 标准I/O开发 194 6.5.1 打开和关闭文件 194 6.5.2 文件读写 197 6.5.3 输入输出 198 6.6 实验内容 201 6.6.1 文件读写及上锁 201 6.6.2 多路复用式串口读写 204 本章小结 207 思考与练习 207 第7章 进程控制开发 208 7.1 Linux下进程概述 208 7.1.1 进程相关基本概念 208 7.1.2 Linux下的进程结构 210 7.1.3 Linux下进程的模式和类型 210 7.1.4 Linux下的进程管理 211 7.2 Linux进程控制编程 212 7.3 Linux守护进程 224 7.3.1 守护进程概述 224 7.3.2 编写守护进程 224 7.3.3 守护进程的出错处理 229 7.4 实验内容 232 7.4.1 编写多进程程序 232 7.4.2 编写守护进程 235 本章小结 238 思考与练习 239 第8章 进程间通信 240 8.1 Linux下进程间通信概述 240 8.2 管道通信 241 8.2.1 管道概述 241 8.2.2 管道创建与关闭 242 8.2.3 管道读写 244 8.2.4 标准流管道 246 8.2.5 FIFO 249 8.3 信号通信 253 8.3.1 信号概述 253 8.3.2 信号发送与捕捉 255 8.3.3 信号的处理 258 8.4 共享内存 264 8.4.1 共享内存概述 264 8.4.2 共享内存实现 265 8.5 消息队列 267 8.5.1 消息队列概述 267 8.5.2 消息队列实现 268 8.6 实验内容 272 8.6.1 管道通信实验 272 8.6.2 共享内存实验 275 本章小结 277 思考与练习 278 第9章 多线程编程 279 9.1 Linux下线程概述 279 9.1.1 线程概述 279 9.1.2 线程分类 280 9.1.3 Linux线程技术的发展 280 9.2 Linux线程实现 281 9.2.1 线程基本操作 281 9.2.2 线程访问控制 288 9.3 实验内容——“生产者消费者”实验 298 本章小结 302 思考与练习 303 第10章 嵌入式Linux网络编程 304 10.1 TCP/IP协议概述 304 10.1.1 OSI参考模型及TCP/IP参考模型 304 10.1.2 TCP/IP协议族 305 10.1.3 TCP和UDP 306 10.2 网络基础编程 308 10.2.1 socket概述 308 10.2.2 地址及顺序处理 309 10.2.3 socket基础编程 314 10.3 网络高级编程 322 10.4 ping源码分析 326 10.4.1 ping简介 326 10.4.2 ping源码分析 327 10.5 实验内容——NTP协议实现 345 本章小结 352 思考与练习 352 第11章 嵌入式Linux设备驱动开发 353 11.1 设备驱动概述 353 11.1.1 设备驱动简介及驱动模块 353 11.1.2 设备文件分类 354 11.1.3 设备号 355 11.1.4 驱动层次结构 355 11.1.5 设备驱动程序与外界的接口 355 11.1.6 设备驱动程序的特点 356 11.2 字符设备驱动编写 356 11.3 LCD驱动编写实例 363 11.3.1 LCD工作原理 363 11.3.2 LCD驱动实例 365 11.4 块设备驱动编写 374 11.4.1 块设备驱动程序描述符 374 11.4.2 块设备驱动编写流程 375 11.5 中断编程 381 11.6 键盘驱动实现 382 11.6.1 键盘工作原理 382 11.6.2 键盘驱动综述 383 11.6.3 键盘驱动流程 384 11.7 实验内容——skull驱动 394 本章小结 398 思考与练习 399 第12章 Qt图形编程 400 12.1 嵌入式GUI简介 400 12.1.1 Qt/Embedded 401 12.1.2 MiniGUI 401 12.1.3 Microwindows、Tiny X等 402 12.2 Qt/Embedded开发入门 402 12.2.1 Qt/Embedded介绍 402 12.2.2 Qt/Embedded信号和插槽机制 405 12.2.3 搭建Qt/Embedded开发环境 409 12.2.4 Qt/Embedded窗口部件 410 12.2.5 Qt/Embedded图形界面编程 414 12.2.6 Qt/Embedded对话框设计 416 12.3 实验内容——使用Qt编写“Hello,World”程序 420 本章小结 428

2013-08-15

Linux内核网络栈源代码情景分析.part5.rar

Linux内核网络栈源代码情景分析.part5.rar

2013-08-14

Linux内核网络栈源代码情景分析.part4.rar

Linux内核网络栈源代码情景分析.part4.rar

2013-08-14

Linux内核网络栈源代码情景分析.part3.rar

Linux内核网络栈源代码情景分析.part3.rar

2013-08-14

Linux内核网络栈源代码情景分析.part2.rar

Linux内核网络栈源代码情景分析.part2.rar

2013-08-14

Linux内核网络栈源代码情景分析.part1.rar

Linux内核网络栈源代码情景分析.part1.rar

2013-08-14

LINUX与UNIX+Shell编程指南

LINUX与UNIX Shell编程指南.pdf 很经典的一本书, 是中文整合版的,不是多个小文件的压缩包; 还有完整的书签。 美 坦思利 Tansley,D 著 。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的用户组 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup命令提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、输出和错误 40 5.6.1 标准输入 40 5.6.2 标准输出 40 5.6.3 标准错误 40 5.7 文件重定向 40 5.7.1 重定向标准输出 41 5.7.2 重定向标准输入 42 5.7.3 重定向标准错误 42 5.8 结合使用标准输出和标准错误 43 5.9 合并标准输出和标准错误 43 5.10 exec 44 5.11 使用文件描述符 44 5.12 小结 45 第6章 命令执行顺序 46 6.1 使用&& 46 6.2 使用|| 46 6.3 用()和{ }将命令结合在一起 47 6.4 小结 48 第二部分 文本过滤 第7章 正则表达式介绍 49 7.1 使用句点匹配单字符 50 7.2 在行首以^匹配字符串或字符序列 50 7.3 在行尾以$匹配字符串或字符 51 7.4 使用*匹配字符串中的单字符或其重复 序列 51 7.5 使用\屏蔽一个特殊字符的含义 52 7.6 使用[]匹配一个范围或集合 52 7.7 使用\{\}匹配模式结果出现的次数 53 7.8 小结 55 第8章 grep家族 56 8.1 grep 57 8.1.1 双引号引用 57 8.1.2 grep选项 57 8.1.3 查询多个文件 57 8.1.4 行匹配 57 8.1.5 行数 58 8.1.6 显示非匹配行 58 8.1.7 精确匹配 58 8.1.8 大小写敏感 58 8.2 grep和正则表达式 58 8.2.1 模式范围 59 8.2.2 不匹配行首 59 8.2.3 设置大小写 59 8.2.4 匹配任意字符 59 8.2.5 日期查询 59 8.2.6 范围组合 60 8.2.7 模式出现机率 60 8.2.8 使用grep匹配“与”或者“或”模式 61 8.2.9 空行 61 8.2.10 匹配特殊字符 61 8.2.11 查询格式化文件名 61 8.2.12 查询IP地址 61 8.3 类名 62 8.4 系统grep命令 62 8.4.1 目录 63 8.4.2 passwd文件 63 8.4.3 使用ps命令 63 8.4.4 对一个字符串使用grep 64 8.5 egrep 64 8.6 小结 65 第9章 AWK介绍 66 9.1 调用awk 66 9.2 awk脚本 67 9.2.1 模式和动作 67 9.2.2 域和记录 67 9.2.3 awk中正则表达式及其操作 70 9.2.4 元字符 70 9.2.5 条件操作符 70 9.2.6 awk内置变量 73 9.2.7 NF、NR和FILENAME 74 9.2.8 awk操作符 75 9.2.9 内置的字符串函数 78 9.2.10 字符串屏蔽序列 80 9.2.11 awk输出函数printf 81 9.2.12 printf修饰符 81 9.2.13 awk数组 86 9.3 小结 88 第10章 sed 用法介绍 89 10.1 sed怎样读取数据 89 10.2 调用sed 89 10.2.1 保存sed输出 90 10.2.2 使用sed在文件中查询文本的方式 90 10.2.3 基本sed编辑命令 90 10.3 sed和正则表达式 91 10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 92 10.4.9 最后一行 93 10.4.10 打印行号 93 10.4.11 附加文本 93 10.4.12 创建sed脚本文件 94 10.4.13 插入文本 94 10.4.14 修改文本 95 10.4.15 删除文本 96 10.4.16 替换文本 96 10.5 使用替换修改字符串 97 10.6 将sed结果写入文件命令 97 10.7 从文件中读文本 98 10.8 匹配后退出 98 10.9 显示文件中的控制字符 99 10.10 使用系统sed 99 10.10.1 处理控制字符 99 10.10.2 处理报文输出 101 10.10.3 去除行首数字 101 10.10.4 附加文本 102 10.10.5 从shell向sed传值 102 10.10.6 从sed输出中设置shell变量 102 10.11 快速一行命令 102 10.12 小结 103 第11章 合并与分割 104 11.1 sort用法 104 11.1.1 概述 104 11.1.2 sort选项 104 11.1.3 保存输出 105 11.1.4 sort启动方式 105 11.1.5 sort对域的参照方式 105 11.1.6 文件是否已分类 105 11.1.7 基本sort 106 11.1.8 sort分类求逆 106 11.1.9 按指定域分类 106 11.1.10 数值域分类 106 11.1.11 唯一性分类 107 11.1.12 使用k的其他sort方法 108 11.1.13 使用k做分类键排序 108 11.1.14 指定sort序列 108 11.1.15 pos用法 108 11.1.16 使用head和tail将输出分类 109 11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同的域分隔符 116 11.6.3 paste命令管道输入 117 11.7 split用法 117 11.8 小结 118 第12章 tr用法 119 12.1 关于tr 119 12.1.1 字符范围 119 12.1.2 保存输出 120 12.1.3 去除重复出现的字符 120 12.1.4 删除空行 120 12.1.5 大写到小写 121 12.1.6 小写到大写 121 12.1.7 删除指定字符 121 12.1.8 转换控制字符 122 12.1.9 快速转换 122 12.1.10 匹配多于一个字符 123 12.2 小结 123 第三部分 登录环境 第13章 登录环境 125 13.1 /etc/profile 125 13.2 用户的$HOME.profile 128 13.3 stty用法 129 13.4 创建.logout文件 131 13.5 小结 131 第14章 环境和shell变量 132 14.1 什么是shell变量 132 14.2 本地变量 132 14.2.1 显示变量 133 14.2.2 清除变量 133 14.2.3 显示所有本地shell变量 133 14.2.4 结合变量值 134 14.2.5 测试变量是否已经设置 134 14.2.6 使用变量来保存系统命令参数 135 14.2.7 设置只读变量 135 14.3 环境变量 136 14.3.1 设置环境变量 136 14.3.2 显示环境变量 136 14.3.3 清除环境变量 137 14.3.4 嵌入shell变量 137 14.3.5 其他环境变量 139 14.3.6 set命令 140 14.3.7 将变量导出到子进程 140 14.4 位置变量参数 141 14.4.1 在脚本中使用位置参数 142 14.4.2 向系统命令传递参数 142 14.4.3 特定变量参数 143 14.4.4 最后的退出状态 144 14.5 小结 145 第15章 引号 146 15.1 引用必要性 146 15.2 双引号 146 15.3 单引号 147 15.4 反引号 147 15.5 反斜线 148 15.6 小结 149 第四部分 基础shell编程 第16章 shell脚本介绍 151 16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 expr用法 157 17.5.1 增量计数 158 17.5.2 数值测试 158 17.5.3 模式匹配 158 17.6 小结 159 第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用变量测试grep输出 163 18.3.5 文件拷贝输出检查 164 18.3.6 当前目录测试 164 18.3.7 文件权限测试 165 18.3.8 测试传递到脚本中的参数 165 18.3.9 决定脚本是否为交互模式 165 18.3.10 简单的if else语句 166 18.3.11 变量设置测试 166 18.3.12 检测运行脚本的用户 166 18.3.13 将脚本参数传入系统命令 167 18.3.14 null:命令用法 167 18.3.15 测试目录创建结果 168 18.3.16 另一个拷贝实例 169 18.3.17 多个if语句 169 18.3.18 测试和设置环境变量 169 18.3.19 检测最后命令状态 170 18.3.20 增加和检测整数值 171 18.3.21 简单的安全登录脚本 172 18.3.22 elif用法 173 18.3.23 使用elif进行多条件检测 173 18.3.24 多文件位置检测 174 18.4 case语句 175 18.4.1 简单的case语句 175 18.4.2 对匹配模式使用| 176 18.4.3 提示键入y或n 177 18.4.4 case与命令参数传递 177 18.4.5 捕获输入并执行空命令 178 18.4.6 缺省变量值 179 18.5 for循环 180 18.5.1 简单的for循环 181 18.5.2 打印字符串列表 181 18.5.3 对for循环使用ls命令 181 18.5.4 对for循环使用参数 182 18.5.5 使用for循环连接服务器 183 18.5.6 使用for循环备份文件 183 18.5.7 多文件转换 183 18.5.8 多sed删除操作 184 18.5.9 循环计数 184 18.5.10 for循环和本地文档 184 18.5.11 for循环嵌入 185 18.6 until循环 186 18.6.1 简单的until循环 186 18.6.2 监视文件 187 18.6.3 监视磁盘空间 187 18.7 while循环 188 18.7.1 简单的while循环 188 18.7.2 使用while循环读键盘输入 188 18.7.3 用while循环从文件中读取数据 189 18.7.4 使用IFS读文件 189 18.7.5 带有测试条件的文件处理 190 18.7.6 扫描文件行来进行数目统计 191 18.7.7 每次读一对记录 193 18.7.8 忽略#字符 193 18.7.9 处理格式化报表 194 18.7.10 while循环和文件描述符 196 18.8 使用break和continue控制循环 197 18.8.1 break 197 18.8.2 跳出case语句 197 18.8.3 continue 197 18.8.4 浏览文件行 198 18.9 菜单 199 18.10 小结 201 第19章 shell函数 202 19.1 在脚本中定义函数 203 19.2 在脚本中使用函数 203 19.3 向函数传递参数 203 19.4 从调用函数中返回 203 19.5 函数返回值测试 204 19.6 在shell中使用函数 204 19.7 创建函数文件 204 19.8 定位文件 205 19.9 检查载入函数 205 19.10 执行shell函数 205 19.10.1 删除shell函数 206 19.10.2 编辑shell函数 206 19.10.3 函数举例 207 19.10.4 将函数集中在一起 219 19.11 函数调用 219 19.11.1 在脚本中调用函数 219 19.11.2 从函数文件中调用函数 220 19.12 定位文件不只用于函数 222 19.13 小结 223 第20章 向脚本传递参数 224 20.1 shift命令 225 20.1.1 shift命令简单用法 225 20.1.2 命令行输入的最后一个参数 225 20.1.3 使用shift处理文件转换 226 20.2 getopts 229 20.2.1 getopts脚本实例 229 20.2.2 getopts使用方式 231 20.2.3 使用getopts指定变量取值 231 20.2.4 访问取值方式 232 20.2.5 使用getopts处理文件转换 233 20.3 小结 235 第21章 创建屏幕输出 236 21.1 tput用法 236 21.1.1 字符串输出 236 21.1.2 数字输出 237 21.1.3 布尔输出 237 21.2 tput用法 237 21.2.1 设置tput命令 237 21.2.2 使用布尔输出 237 21.2.3 在脚本中使用tput 237 21.2.4 产生转义序列 238 21.2.5 光标位置 239 21.2.6 在屏幕中心位置显示文本 240 21.2.7 查找终端属性 240 21.2.8 在脚本中使用功能键 241 21.2.9 使用颜色 242 21.2.10 产生颜色 243 21.2.11 创建精致菜单 246 21.3 小结 251 第22章 创建屏幕输入 252 22.1 增加记录 252 22.2 删除记录 262 22.3 修改记录 266 22.4 查看记录 270 22.5 小结 273 第23章 调试脚本 274 23.1 一般错误 274 23.1.1 循环错误 274 23.1.2 典型的漏写引号 274 23.1.3 测试错误 274 23.1.4 字符大小写 275 23.1.5 for循环 275 23.1.6 echo 275 23.2 set命令 275 23.3 小结 276 第24章 shell嵌入命令 277 24.1 shell嵌入命令完整列表 277 24.1.1 pwd 277 24.1.2 set 278 24.1.3 times 278 24.1.4 type 278 24.1.5 ulimit 279 24.1.6 wait 279 24.2 小结 279 第五部分 高级shell编程技巧 第25章 深入讨论<< 281 25.1 快速创建一个文件 281 25.2 快速创建打印文档 281 25.3 自动选择菜单 282 25.4 自动ftp传输 283 25.5 访问数据库 286 25.6 小结 288 第26章 shell 工具 289 26.1 创建保存信息的文件 289 26.1.1 使用date命令创建日志文件 289 26.1.2 创建唯一的临时文件 290 26.2 信号 291 26.2.1 杀死一个进程 292 26.2.2 检测信号 293 26.3 trap 294 26.3.1 捕获信号并采取相应的行动 294 26.3.2 捕获信号并采取行动的另 一个例子 295 26.3.3 锁住终端 297 26.3.4 忽略信号 298 26.4 eval 300 26.4.1 执行含有字符串的命令 300 26.4.2 给每个值一个变量名 301 26.5 logger命令 302 26.5.1 使用logger命令 303 26.5.2 在脚本中使用logger命令 303 26.6 小结 305 第27章 几个脚本例子 306 27.1 pingall 306 27.2 backup_gen 306 27.3 del.lines 312 27.4 access.deny 313 27.5 logroll 316 27.6 nfsdown 317 27.7 小结 317 第28章 运行级别脚本 318 28.1 怎么知道系统中是否含有运行 级别目录 318 28.2 确定当前的运行级别 319 28.3 快速熟悉inittab 319 28.4 运行级别 320 28.4.1 各种运行级别 321 28.4.2 运行级别脚本的格式 321 28.4.3 安装运行级别脚本 322 28.5 使用inittab来启动应用程序 323 28.6 启动和停止服务的其他方法 324 28.7 小结 324 第29章 cgi脚本 325 29.1 什么是Web页面? 325 29.2 cgi 325 29.3 连接Web服务器 326 29.4 cgi和HTM脚本 326 29.4.1 基本cgi脚本 326 29.4.2 显示shell命令输出 328 29.4.3 使用SSI 330 29.4.4 访问计数器 330 29.4.5 使用一个链接来显示当前Web 环境变量 332 29.4.6 其他常用的环境变量 334 29.5 get和post方法简介 335 29.5.1 get方法 335 29.5.2 post方法 340 29.5.3 填充列表项 347 29.5.4 自动刷新页面 348 29.6 小结 349 附录 常用shell命令 350

2013-08-14

ACE-6.2.0 源码 已经编译 在vc2010. 最新的

ACE-6.2.0 源码 已经编译 在vc2010. 最新的

2013-08-13

ACE 服务器 客户端

ACE 服务器 客户端

2013-08-13

跟我一起写makefile

跟我一起写makefile

2013-08-13

LINUX和UNIX基础编程

LINUX UNIX shell 基础编程

2014-06-05

基于网络通信内容的木马检测系统设计与实现

基于网络通信内容的木马检测系统设计与实现

2014-04-18

Linux高级程序设计

Linux高级程序设计 Jon Masters、 Richard Blum著(陈健译)pdf带书签 和 随书代码

2014-01-07

现代编译原理——C语言描述 中英文 代码

IT业界一向有编译原理“龙虎鲸书”的传说,指的是编译原理最著名最权威的三部教材。此为虎书,龙书是《编译原理技术与工具》,鲸书是《高级编译器设计与实现》。 Andrew.W.Appel(阿佩尔)著,现代编译原理——C语言描述,现代编译原理——Java语言描述,全集。含两部中英文电子书和全部代码、答案。此书的封面是一只大老虎,因此被中外读者昵称为“虎书”(Tiger Book)。 资源的内容: 1、现代编译原理——C语言描述,中文版。 2、现代编译原理——C语言描述,英文版。 3、现代编译原理——C语言描述,全书代码。代码都是我亲自手动从官方网站一个个下载的,绝对正宗权威! 4、现代编译原理——C语言描述,全书答案,由国内大学佚名教授解答。 5、现代编译原理——Java语言描述,中文版。 6、现代编译原理——Java语言描述,英文版。 7、现代编译原理——Java语言描述,全书代码。代码都是我亲自手动从官方网站一个个下载的,绝对正宗权威! 本人之前也发过相同的资源,见http://download.csdn.net/source/3176211,但是缺少2、4、5。因此本次补齐所有材料,重发整个资源!!! 我觉得此书的代码特别全面。学IT技术,通过看代码写代码,在任何时候都是最好的学习方法。与看书相比,直接学习代码,能够学习更加彻底,也更快。此书的概念描述不是很清楚。编译原理的概念部分,请看国防科大陈火旺院士著《程序设计语言编译原理》,http://download.csdn.net/source/3071244。 请CSDN网友,下载完,评论的同时,要点击评论框上方的五角星(共5个五角星),这样你的被扣的积分就可以返还,还会加一分。如果只评论,不点击小五角星,积分不会返还。一定要先下载完,再评论。如果先评论后下载,或者在下载的过程中评论,积分同样不会返还。 数据结构和算法书籍,我强烈推荐Sartaj Sahni(萨尔塔·萨尼)著《数据结构算法与应用——C++语言描述》。这是一部难得的好书,作者Sartaj Sahni也是国际知名的算法大师,循序渐进,娓娓道来,每一种数据结构和算法都给出了详细的实现代码和运行结果,而且代码质量极高,甚至可以直接照搬到商业软件开发中。数据结构部分详尽全面,只看此一本即可完全学会。算法部分也很精要,比算法导论更容易学习和入门。Sartaj Sahni《数据结构算法与应用——C++语言描述、Java语言描述》全集,包含中英文图书、代码、习题答案、演示动画、考试题,都是我亲自从此书的官方网站下载并汇总的,绝对权威,请在这里下载:download.csdn.net/source/3255585。 学好核心技术,既为自己,也为天空不落下别国的炸弹!

2013-12-12

程序员面试题精选100题-何海涛

程序员面试题精选100题-何海涛

2013-11-25

libev-4.15 最新代码

libev-4.15 最新代码

2013-11-06

高性能TCP/UDP服务器网络层代码

高性能TCP/UDP服务器网络层代码

2013-11-06

tcp ip sockets编程 c语言实现 第2版 中文版 超清

tcp ip sockets编程 c语言实现 第2版 中文版 超清

2013-10-31

高级TCP/IP 编程 附源码

高级TCP/IP 编程 附源码 本书提供了44个TCP/IP编程技巧,生动详实的探索了网络编程的各个方面。 本书适合中、高级网络程序员阅读,也可供专业计算机人士参考

2013-10-31

百度2010以及历年笔试题整理

百度2010以及历年笔试题整理.r

2013-10-22

Linux高性能服务器编程 源码

Linux高性能服务器编程 随书源码

2013-10-15

openMP入门

openMP入门 openMP入门 openMP入门openMP入门openMP入门

2013-09-28

Intel_OpenMP白皮书

Intel_OpenMP白皮书 中文的,pdf,intel官方网站的,openmp白皮book

2013-09-28

多核架构与编程技术

多核架构与编程技术

2013-09-28

Intel Threading Building Blocks编程指南

Intel Threading Building Blocks编程指南

2013-09-28

经典makefile例子

经典makefile例子

2013-09-12

windows gdb调试makefile

windows gdb调试makefile

2013-09-12

Linux+C编程一站式学习+最新版+pdf+网页格式 源码

Linux+C编程一站式学习+最新版+pdf+网页格式 源码

2013-09-09

空空如也

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

TA关注的人

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