• nginx+fastcgi编译与移植手册

    nginx fastcgi 编译与移植 手册 nginx fastcgi 编译与移植 手册 nginx fastcgi 编译与移植 手册

    0
    403
    115KB
    2018-04-12
    49
  • encfs 交叉编译

    encfs 交叉编译 encfs 交叉编译 encfs 交叉编译 encfs 交叉编译 encfs 交叉编译

    0
    220
    89KB
    2018-04-12
    10
  • 基于 -64定制系统iso制作

    目录 一. 制作环境的准备 2 1. 安装制作发行版的工具: 2 2. 安装Centos6.0系统 2 二. 创建定制系统(MediaCentOS 基于 CentOS6.0-64 Base server) 2 1. 光盘主要结构及文件简介 2 2. 创建设/disk目录,挂载光盘 3 3. 拷贝光盘目录 3 4. 拷贝 MediaCentOS系统所需rpm包 3 5. 定制安装控制文件ks.cfg 3 6. 修改isolinux.cfg文件 10 7. 修改安装界面文本标题 12 8.修改安装光盘背景图片 13 9. 生成comps.xml 13 10. 将媒体中心安装包拷贝到 /disk/ MediaCentOS/ 下 14 三. 制作ISO文件 14

    4
    97
    34KB
    2012-06-04
    10
  • 精通git (pro git 中文版)

    版本控制软件

    5
    205
    3.04MB
    2011-12-13
    11
  • Linux网络编程

    第一章概论 ..............1 1.1 网络的历史...1 1.2 OSI 模型.......3 1.3 Internet 体系模型.............4 1.4 客户/服务器模型..............5 1.4 UNIX 的历史 ..................7 1.4.1 Unix 诞生前的故事...7 1.4.2 UNIX 的诞生.........8 1.4.3 1979 – UNIX 第七版........... 10 1.4.4 UNIX 仅仅是历史吗?........... 11 1.5 Linux 的发展................. 11 1.5.1 Linux 的发展历史.... 12 1.5.2 什么叫GNU? ..... 12 1.5.3 Linux 的特色....... 13 1.5.4 硬件需求.............. 14 1.5.5 Linux 可用的软件... 14 1.5.6 为什么选择 Linux ? .......... 15 1.6 Linux 和 Unix 的发展... 15 第二章 UNIX/Linux 模型..............17 2.1 UNIX/Linux 基本结构......17 2.2 输入和输出.....................19 2.2.1 UNIX/Linux 文件系统简介....19 2.2.2 流和标准I/O 库.....20 2.3 进程............21 第三章进程控制 ......22 3.1 进程的建立与运行..........22 3.1.1 进程的概念...........22 3.1.2 进程的建立...........22 3.1.3 进程的运行...........24 3.1.4 数据和文件描述符的继承.....29 3.2 进程的控制操作..............31 3.2.1 进程的终止...........31 3.2.2 进程的同步...........32 3.2.3 进程终止的特殊情况............33 3.2.4 进程控制的实例....33 3.3 进程的属性.....................38 3.3.1 进程标识符...........38 3.3.2 进程的组标识符....39 3.3.3 进程环境...............40 3.3.4 进程的当前目录....42 3.3.5 进程的有效标识符....43 3.3.6 进程的资源...........44 3.3.7 进程的优先级........45 3.4 守护进程.....46 3.4.1 简介...46 3.4.2 守护进程的启动...........46 3.4.3 守护进程的错误输出............46 3.4.4 守护进程的建立....48 3.5 本章小结.....49 第四章进程间通信...50 4.1 进程间通信的一些基本概念...........50 4.2 信号............50 4.2.1 信号的处理...........52 4.2.2 信号与系统调用的关系.........54 4.2.3 信号的复位...........55 4.2.4 在进程间发送信号....56 4.2.5 系统调用alarm()和pause()....58 4.2.6 系统调用setjmp()和longjmp()...........62 4.3 管道............63 4.3.1 用C 来建立、使用管道........65 4.3.2 需要注意的问题....72 4.4 有名管道.....72 4.4.1 有名管道的创建....72 4.4.2 有名管道的I/O 使用.............73 4.4.3 未提到的关于有名管道的一些注意...75 4.5 文件和记录锁定..............75 4.5.1 实例程序及其说明....75 4.5.2 锁定中的几个概念....78 4.5.3 System V 的咨询锁定............78 4.5.4 BSD 的咨询式锁定...79 4.5.5 前面两种锁定方式的比较.....81 4.5.6 Linux 的其它上锁技术..........81 4.6 System V IPC ..................84 4.6.1 ipcs 命令...............85 4.6.2 ipcrm 命令.............86 4.7 消息队列(Message Queues).........86 4.7.1 有关的数据结构....86 4.7.2 有关的函数...........89 4.7.3 消息队列实例——msgtool,一个交互式的消息队列使用工具..................94 4.8 信号量(Semaphores) ........97 4.8.1 有关的数据结构....98 4.8.2 有关的函数...........99 4.8.3 信号量的实例——semtool,交互式的信号量使用工具.......103 4.9 共享内存(Shared Memory) ............109 4.9.1 有关的数据结构.....109 4.9.2 有关的函数......... 110 4.9.3 共享内存应用举例——shmtool,交互式的共享内存使用工具................... 112 4.9.4 共享内存与信号量的结合使用........ 114 第五章通信协议简介 ................120 5.1 引言..........120 5.2 XNS(Xerox Network Systems)概述........120 5.2.1 XNS 分层结构.....120 5.3 IPX/SPX 协议概述.......122 5.3.1 网际包交换(IPX) ...........122 5.3.2 排序包交换(SPX)...........124 5.4 Net BIOS 概述...............124 5.5 Apple Talk 概述.............125 5.6 TCP/IP 概述..................126 5.6.1 TCP/IP 结构模型....126 5.6.2 Internet 协议(IP).............127 5.6.3 传输控制协议(TCP) .......132 5.6.4 用户数据报文协议..............134 5.7 小结..........135 第六章 Berkeley 套接字............ 136 6.1 引言......... 136 6.2 概述......... 136 6.2.1 Socket 的历史..... 136 6.2.2 Socket 的功能..... 136 6.2.3 套接字的三种类型............. 138 6.3 Linux 支配的网络协议..... 141 6.3.1 什么是TCP/IP? ..... 141 6.4 套接字地址.................. 142 6.4.1 什么是Socket? .... 142 6.4.2 Socket 描述符..... 142 6.4.3 一个套接字是怎样在网络上传输数据的?......... 143 6.5 套接字的一些基本知识... 144 6.5.1 基本结构............ 144 6.5.2 基本转换函数..... 145 6.6 基本套接字调用........... 147 6.6.1 socket() 函数...... 147 6.6.2 bind() 函数........ 148 6.6.3 connect()函数..... 150 6.6.4 listen() 函数....... 151 6.6.5 accept()函数....... 152 6.6.6 send()、recv()函数............. 154 6.6.7 sendto() 和recvfrom() 函数........... 155 6.6.8 close()和shutdown()函数.... 156 6.6.9 setsockopt() 和getsockopt() 函数... 157 6.6.10 getpeername()函数............ 157 6.6.11 gethostname()函数............ 158 6.7 DNS 的操作................. 158 6.7.1 理解DNS........... 158 6.7.2 和DNS 有关的函数和结构............ 158 6.7.3 DNS 例程........... 159 6.8 套接字的Client/Server 结构实现的例子.... 160 6.8.1 简单的流服务器.... 161 6.8.2 简单的流式套接字客户端程序....... 163 6.8.3 数据报套接字例程(DatagramSockets)............ 165 6.9 保留端口..................... 169 6.9.1 简介................... 169 6.9.2 保留端口............ 170 6.10 五种I/O 模式................ 179 6.10.1 阻塞I/O 模式... 179 6.10.2 非阻塞模式I/O.... 180 6.10.3 I/O 多路复用.... 181 6.10.4 信号驱动I/O 模式........... 182 6.10.5 异步I/O 模式... 185 6.10.6 几种I/O 模式的比较........ 186 6.10.7 fcntl()函数........ 186 6.10.8 套接字选择项select()函数............ 187 6.11 带外数据.................... 190 6.11.1 TCP 的带外数据.............. 190 6.11.2 OOB 传输套接字例程(服务器代码Server.c) ............... 193 6.11.3 OOB 传输套接字例程(客户端代码Client.c)................ 196 6.11.4 编译例子.......... 199 6.12 使用Inetd(Internet 超级服务器) ......... 199 6.12.1 简介................. 199 6.12.2 一个简单的inetd 使用的服务器程序hello inet service...... 199 6.12.3 /etc/services 和 /etc/inetd.conf 文件.................. 200 6.12.4 一个复杂一些的inetd 服务器程序................... 201 6.12.5 一个更加复杂的inetd 服务器程序................... 203 6.12.6 程序必须遵守的安全性准则......... 205 6.12.7 小结................. 205 6.13 本章总结................... 205 第七章网络安全性....................206 7.1 网络安全简介...............206 7.1.1 网络安全的重要性..............206 7.1.2 信息系统安全的脆弱性.......207 7.2 Linux 网络不安全的因素..............209 7.3 Linux 程序员安全.......... 211 7.3.1 系统子程序.........212 7.3.2 标准C 函数库......214 7.3.3 书写安全的C 程序..............216 7.3.4 SUID/SGID 程序指导准则....217 7.3.5 root 程序的设计...218 7.4 小结..........219 第八章 Ping 例程...220 8.1 Ping 命令简介...............220 8.2 Ping 的基本原理............220 8.3 小结..........221 第九章 tftp 例程.....222 9.1 tftp 协议简介.................222 9.2 tftp 的使用....................222 9.3 tftp 的原理....................223 9.3 tftp 的基本结构.............223 9.4 小节..........225 第十章远程命令执行 ................226 10.1 引言........226 10.2 rcmd 函数和rshd 服务器.............227 10.3 rexec 函数和rexecd 服务器.........233 第十一章远程注册....................235 11.1 简介.........235 11.2 终端行律和伪终端.......235 11.3 终端方式字和控制终端...239 11.4 rlogin 概述...................242 11.5 窗口环境.....................242 11.6 流控制与伪终端方式字...243 11.7 rlogin 客户程序............245 11.8 rlogin 服务器...............246 第十二章远程过程调用.............249 12.1 引言........249 12.2 远程过程调用模型......249 12.3 传统过程调用和远程过程调用的比较.....250 12.4 远程过程调用的定义...252 12.5 远程过程调用的有关问题...........252 12.5.1 远程过程调用传送协议.....253 12.5.2 Sun RPC ..........254 12.5.3 Xerox Courier ...254 12.5.4 Apollo RPC.......255 12.6 stub 过程简介..............256 12.7 rpcgen 简介.................256 12.8 分布式程序生成的例子..............257 12.8.1 我们如何能够构造出一个分布式应用程序........257 12.9 小结........283 第十三章远程磁带的访问 .........284 13.1 简介........284 13.2 Linux 磁带驱动器的处理............285 13.3 rmt 协议...285 13.4 rmt 服务器设计分析....286 第十四章 WWW 上HTTP 协议.... 290 14.1 引言........ 290 14.2 HTTP 客户请求.......... 290 14.2.1 客户端............. 290 14.2.2 服务器端.......... 290 14.2.3 Web 请求简介... 291 14.2.4 HTTP – HyperText Transfer Protocol 超文本传输协议....... 295 14.3 Web 编程................... 297 14.4 小结....... 301 附录A 有关网络通信的服务和网络库函数.............302 附录B Vi 使用简介....................319 B.1 Vi 基本观念..................319 B.1.1 进入与离开.........319 B.1.2 Vi 输入模式........319 B.2 Vi 基本编辑..................320 B.2.1 删除与修改.........320 B.3 Vi 进阶应用..................320 B.3.1 移动光标............320 B.3.2 进阶编辑命令.....322 B.3.3 文件命令............322 附录C Linux 下C 语言使用与调试简介....324 C.1 C 语言编程..................324 C.2 什么是C? ....................324 C.3 GNU C 编译器..............324 C.3.1 使用GCC...........324 C.3.2 GCC 选项...........325 C.3.3 优化选项............325 C.3.4 调试和剖析选项.....325 C.3.5 用gdb 调试GCC 程序........326 C.4 另外的C 编程工具.......330 C.4.1 Xxgdb.................330 C.4.2 Calls ...................331 C.4.3 cproto .................332 C.4.4 Indent .................333 C.4.5 Gprof..................334 C.4.6 f2c 和p2c ...........335 附录D Ping 源码....336 附录E TFTP 服务器程序源码....362

    5
    442
    1.65MB
    2011-11-08
    10
  • 深入分析Linux内核源码

    深入分析Linux内核源码 前言 第一章 走进linux 1.1 GNU与Linux的成长 1.2 Linux的开发模式和运作机制 1.3走进Linux内核 1.3.1 Linux内核的特征 1.3.2 Linux内核版本的变化 1.4 分析Linux内核的意义 1.4.1 开发适合自己的操作系统 1.4.2 开发高水平软件 1.4.3 有助于计算机科学的教学和科研 1.5 Linux内核结构 1.5.1 Linux内核在整个操系统中的位置 1.5.2 Linux内核的作用 1.5.3 Linux内核的抽象结构 1.6 Linux内核源代码 1.6.1 多版本的内核源代码 1.6.2 Linux内核源代码的结构 1.6.3 从何处开始阅读源代码 1.7 Linux内核源代码分析工具 1.7.1 Linux超文本交叉代码检索工具 1.7.2 Windows平台下的源代码阅读工具Source Insight 第二章 Linux运行的硬件基础 2.1 i386的寄存器 2.1.1通用寄存器 2.1.2段寄存器 2.1.3状态和控制寄存器 2.1.4 系统地址寄存器 2.1.5 调试寄存器和测试寄存器 2.2 内存地址 2.3 段机制和描述符 2.3.1 段机制 2.3.2 描述符的概念 2.3.3系统段描述符 2.3.4 描述符表 2.3.5 选择符与描述符表寄存器 2.3.6 描述符投影寄存器 2.3.7 Linux中的段 2.4 分页机制 2.4.1 分页机构 2.4.2页面高速缓存 2.5 Linux中的分页机制 2.5.1 与页相关的数据结构及宏的定义 2.5.2 对页目录及页表的处理 2.6 Linux中的汇编语言 2.6.1 AT&T与Intel汇编语言的比较 2.6.2 AT&T汇编语言的相关知识 2.6.3 Gcc嵌入式汇编 2.6.4 Intel386汇编指令摘要 第三章中断机制 3.1 中断基本知识 3.1.1 中断向量 3.1.2 外设可屏蔽中断 3.1.3异常及非屏蔽中断 3.1.4中断描述符表 3.1.5 相关汇编指令 3.2中断描述符表的初始化 3.2. 1 外部中断向量的设置 3.2.2中断描述符表IDT的预初始化 3.2.3 中断向量表的最终初始化 3.3异常处理 3.3.1 在内核栈中保存寄存器的值 3.3.2 中断请求队列的初始化 3.3.3中断请求队列的数据结构 3.4 中断处理 3.4.1中断和异常处理的硬件处理 3.4.2 Linux对异常和中断的处理 3.4.3 与堆栈有关的常量、数据结构及宏 3.4.4 中断处理程序的执行 3.4.5 从中断返回 3.5中断的后半部分处理机制 3.5.1 为什么把中断分为两部分来处理 3.5.2 实现机制 3.5.3数据结构的定义 3.5.4 软中断、bh及tasklet的初始化 3.5.5后半部分的执行 3.5.6 把bh移植到tasklet 第四章 进程描述 4.1 进程和程序(Process and Program) 4.2 Linux中的进程概述 4.3 task_struct结构描述 4.4 task_struct结构在内存中的存放 4.4.1 进程内核栈 4.4.2 当前进程(current宏) 4.5 进程组织的方式 4.5.1哈希表 4.5.2双向循环链表 4.5.3 运行队列 4.5.4 等待队列 4.6 内核线程 4.7 进程的权能 4.8 内核同步 4.8.1信号量 4.8.2原子操作 4.8.3 自旋锁、读写自旋锁和大读者自旋锁 4.9 本章小节 第五章进程调度 5.1 Linux时间系统 5.1.1 时钟硬件 5.1.2 时钟运作机制 5.1.3 Linux时间基准 5.1.4 Linux的时间系统 5.2 时钟中断 5.2.1 时钟中断的产生 5.2.2.Linux实现时钟中断的全过程 5.3 Linux的调度程序-Schedule( ) 5.3.1 基本原理 5.3.2 Linux进程调度时机 5.3.3 进程调度的依据 5.3.4 进程可运行程度的衡量 5.3.5 进程调度的实现 5.4 进程切换 5.4.1 硬件支持 5.4.2 进程切换 第六章 Linux内存管理 6.1 Linux的内存管理概述 6.1.1 Linux虚拟内存的实现结构 6.1.2 内核空间和用户空间 6.1.3 虚拟内存实现机制间的关系 6.2 Linux内存管理的初始化 6.2.1 启用分页机制 6.2.2 物理内存的探测 6.2.3 物理内存的描述 6.2.4 页面管理机制的初步建立 6.2.5页表的建立 6.2.6内存管理区 6.3 内存的分配和回收 6.3.1 伙伴算法 6.3.2 物理页面的分配和释放 6.3.3 Slab分配机制 6.4 地址映射机制 6.4.1 描述虚拟空间的数据结构 6.4.2 进程的虚拟空间 6.4.3 内存映射 6.5 请页机制 6.5.1 页故障的产生 6.5.2 页错误的定位 6.5.3 进程地址空间中的缺页异常处理 6.5.4 请求调页 6.5.5 写时复制 6.6 交换机制 6.6.1 交换的基本原理 6.6.2 页面交换守护进程kswapd 6.6.3 交换空间的数据结构 6.6.4 交换空间的应用 6.7 缓存和刷新机制 6.7.1 Linux使用的缓存 6.7.2 缓冲区高速缓存 6.7.3 翻译后援存储器(TLB) 6.7.4 刷新机制 6.8 进程的创建和执行 6.8.1 进程的创建 6.8.2 程序执行 6.8.3 执行函数 第七章 进程间通信 7.1 管道 7.1.1 Linux管道的实现机制 7.1.2 管道的应用 7.1.3 命名管道(FIFO) 7.2 信号(signal) 7.2.1 信号种类 7.2.2 信号掩码 7.2.3 系统调用 7.2.4 典型系统调用的实现 7.2.5 进程与信号的关系 7.2.6 信号举例 7.3 System V 的IPC机制 7.3.1 信号量 7.3.2 消息队列 7.3.3 共享内存 第八章 虚拟文件系统 8.1 概述 8.2 VFS中的数据结构 8.2.1 超级块 8.2.2 VFS的索引节点 8.2.3 目录项对象 8.2.4 与进程相关的文件结构 8.2.5 主要数据结构间的关系 8.2.6 有关操作的数据结构 8.3 高速缓存 8.3.1 块高速缓存 8.3.2 索引节点高速缓存 8.3.3 目录高速缓存 8.4 文件系统的注册、安装与拆卸 8.4.1 文件系统的注册 8.4.2 文件系统的安装 8.4.3 文件系统的卸载 8.5 限额机制 8.6 具体文件系统举例 8.6.1 管道文件系统pipefs 8.6.2 磁盘文件系统BFS 8.7 文件系统的系统调用 8.7.1 open 系统调用 8.7.2 read 系统调用 8.7.3 fcntl 系统调用 8 .8 Linux2.4文件系统的移植问题 第九章 Ext2文件系统 9.1 基本概念 9.2 Ext2的磁盘布局和数据结构 9.2.1 Ext2的磁盘布局 9.2.2 Ext2的超级块 9.2.3 Ext2的索引节点 9.2.4 组描述符 9.2.5 位图 9.2.6 索引节点表及实例分析 9.2.7 Ext2的目录项及文件的定位 9.3 文件的访问权限和安全 9.4 链接文件 9.5 分配策略 9.5.1 数据块寻址 9.5.2 文件的洞 9.5.3 分配一个数据块 第十章 模块机制 10.1 概述 10.1.1 什么是模块 10.1.2 为什么要使用模块? 10.2 实现机制 10.2.1 数据结构 10.2.2 实现机制的分析 10.3 模块的装入和卸载 10.3.1 实现机制 10.3.2 如何插入和卸载模块 10.4 内核版本 10.4.1 内核版本与模块版本的兼容性 10.4.2 从版本2.0到2.2内核API的变化 10.4.3 把内核2.2移植到内核2.4 10.5 编写内核模块 10.5.1 简单内核模块的编写 10.5.2 内核模块的Makefiles文件 10.5.3 内核模块的多个文件 第十一章 设备驱动程序 11.1 概述 11.1.1 I/O软件 11.1.2 设备驱动程序 11.2 设备驱动基础 11.2.1 I/O端口 11.2.2 I/O接口及设备控制器 11.2.3 设备文件 11.2.4 VFS对设备文件的处理 11.2.5 中断处理 11.2.6 驱动DMA工作 11.2.7 I/O 空间的映射 11.2.8 设备驱动程序框架 11.3 块设备驱动程序 11.3.1 块设备驱动程序的注册 11.3.2 块设备基于缓冲区的数据交换 11.3.3 块设备驱动程序的几个函数 11.3.4 RAM 盘驱动程序的实现 11.3.5 硬盘驱动程序的实现 11.4 字符设备驱动程序 11.4.1 简单字符设备驱动程序 11.4.2 字符设备驱动程序的注册 11.4.3 一个字符设备驱动程序的实例 11.4.4 驱动程序的编译与装载 第十二章 网络 12.1 概述 12.2 网络协议 12.2.1 网络参考模型 12.2.2 TCP/IP 协议工作原理及数据流 12.2.3 Internet 协议 12.2.4 TCP协议 12.3 套接字(socket) 12.3.1 套接字在网络中的地位和作用 12.3.2 套接字接口的种类 12.3.3 套接字的工作原理 12.3.4 socket 的通信过程 12.3.5 socket为用户提供的系统调用 12.4 套接字缓冲区(sk_buff) 12.4.1 套接字缓冲区的特点 12.4.2 套接字缓冲区操作基本原理 12.4.3 sk_buff数据结构的核心内容 12.4.4 套接字缓冲区提供的函数 12.4.5 套接字缓冲区的上层支持例程 12.5 网络设备接口 12.5.1 基本结构 12.5.2 命名规则 12.5.3 设备注册 12.5.4 网络设备数据结构 12.5.5 支持函数 第十三章 启动系统 13.1 初始化流程 13.1.1 系统加电或复位 13.1.2 BIOS启动 13.1.3 Boot Loader 13.1.4 操作系统的初始化 13.2 初始化的任务 13.2.1 处理器对初始化的影响 13.2.2 其他硬件设备对处理器的影响 13.3 Linux 的Boot Loarder 13.3.1 软盘的结构 13.3.2 硬盘的结构 13.3.3 Boot Loader 13.3.4 LILO 13.3.5 LILO的运行分析 13.4 进入操作系统 13.4.1 Setup.S 13.4.2 Head.S 13.5 main.c中的初始化 13.6 建立init进程 13.6.1 init进程的建立 13.6.2 启动所需的Shell脚本文件 附录: 1 Linux 2.4内核API 2.1 驱动程序的基本函数 2.2 双向循环链表的操作 2.3 基本C库函数 2.4 Linux内存管理中Slab缓冲区 2.5 Linux中的VFS 2.6 Linux的连网 2.7 网络设备支持 2.8 模块支持 2.9 硬件接口 2.10 块设备 2.11 USB 设备 2 参考文献

    4
    958
    4.12MB
    2011-11-08
    44
  • linux c 常用函数

    信号处理篇 内存及字符串操作篇 内存控制篇 字符串转换篇 字符测试篇 常用数学函数篇 接口处理篇 数据结构及算法篇 文件内容操作篇 文件操作篇 文件权限控制篇 日期时间篇 环境变量篇 用户组篇 终端控制篇 进程操作篇

    4
    86
    1.27MB
    2011-11-08
    10
  • UNIX环境高级编程

    目 录 译者序 译者简介 前言 第1章 UNIX基础知识 1 1.1 引言 1 1.2 登录 1 1.2.1 登录名 1 1.2.2 shell 1 1.3 文件和目录 2 1.3.1 文件系统 2 1.3.2 文件名 2 1.3.3 路径名 2 1.3.4 工作目录 4 1.3.5 起始目录 4 1.4 输入和输出 5 1.4.1 文件描述符 5 1.4.2 标准输入、标准输出和标准 出错 5 1.4.3 不用缓存的I/O 5 1.4.4 标准I/O 6 1.5 程序和进程 7 1.5.1 程序 7 1.5.2 进程和进程ID 7 1.5.3 进程控制 7 1.6 ANSI C 9 1.6.1 函数原型 9 1.6.2 类属指针 9 1.6.3 原始系统数据类型 10 1.7 出错处理 10 1.8 用户标识 11 1.8.1 用户ID 11 1.8.2 组ID 12 1.8.3 添加组ID 12 1.9 信号 12 1.10 UNIX时间值 14 1.11 系统调用和库函数 14 1.12 小结 16 习题 16 第2章 UNIX标准化及实现 17 2.1 引言 17 2.2 UNIX标准化 17 2.2.1 ANSI C 17 2.2.2 IEEE POSIX 18 2.2.3 X/Open XPG3 19 2.2.4 FIPS 19 2.3 UNIX实现 19 2.3.1 SVR4 20 2.3.2 4.3+BSD 20 2.4 标准和实现的关系 21 2.5 限制 21 2.5.1 ANSI C限制 22 2.5.2 POSIX限制 22 2.5.3 XPG3限制 24 2.5.4 sysconf、pathconf 和fpathconf 函数 24 2.5.5 FIPS 151-1要求 28 2.5.6 限制总结 28 2.5.7 未确定的运行时间限制 29 2.6 功能测试宏 32 2.7 基本系统数据类型 32 2.8 标准之间的冲突 33 2.9 小结 34 习题 34 第3章 文件I/O 35 3.1 引言 35 3.2 文件描述符 35 3.3 open函数 35 3.4 creat函数 37 3.5 close函数 37 3.6 lseek函数 38 3.7 read函数 40 3.8 write函数 41 3.9 I/O的效率 41 3.10 文件共享 42 3.11 原子操作 45 3.11.1 添加至一个文件 45 3.11.2 创建一个文件 45 3.12 dup和dup2函数 46 3.13 fcntl函数 47 3.14 ioctl函数 50 3.15 /dev/fd 51 3.16 小结 52 习题 52 第4章 文件和目录 54 4.1 引言 54 4.2 stat, fstat和lstat函数 54 4.3 文件类型 55 4.4 设置-用户-ID和设置-组-ID 57 4.5 文件存取许可权 58 4.6 新文件和目录的所有权 60 4.7 access函数 60 4.8 umask函数 62 4.9 chmod和fchmod函数 63 4.10 粘住位 65 4.11 chown, fchown和 lchown函数 66 4.12 文件长度 67 4.13 文件截短 68 4.14 文件系统 69 4.15 link, unlink, remove和rename 函数 71 4.16 符号连接 73 4.17 symlink 和readlink函数 76 4.18 文件的时间 76 4.19 utime函数 78 4.20 mkdir和rmdir函数 79 4.21 读目录 80 4.22 chdir, fchdir和getcwd函数 84 4.23 特殊设备文件 86 4.24 sync和fsync函数 87 4.25 文件存取许可权位小结 88 4.26 小结 89 习题 89 第5章 标准I/O库 91 5.1 引言 91 5.2 流和FILE对象 91 5.3 标准输入、标准输出和标准出错 91 5.4 缓存 91 5.5 打开流 94 5.6 读和写流 96 5.6.1 输入函数 96 5.6.2 输出函数 97 5.7 每次一行I/O 98 5.8 标准I/O的效率 99 5.9 二进制I/O 100 5.10 定位流 102 5.11 格式化I/O 103 5.11.1 格式化输出 103 5.11.2 格式化输入 103 5.12 实现细节 104 5.13 临时文件 105 5.14 标准I/O的替代软件 108 5.15 小结 108 习题 108 第6章 系统数据文件和信息 110 6.1 引言 110 6.2 口令文件 110 6.3 阴影口令 112 6.4 组文件 113 6.5 添加组ID 114 6.6 其他数据文件 115 6.7 登录会计 116 6.8 系统标识 116 6.9 时间和日期例程 117 6.10 小结 121 习题 121 第7章 UNIX进程的环境 122 7.1 引言 122 7.2 main 函数 122 7.3 进程终止 122 7.3.1 exit和_exit函数 122 7.3.2 atexit函数 124 7.4 命令行参数 125 7.5 环境表 126 7.6 C程序的存储空间布局 126 7.7 共享库 127 7.8 存储器分配 128 7.9 环境变量 130 7.10 setjmp 和longjmp函数 132 7.10.1 自动、寄存器和易失变量 134 7.10.2 自动变量的潜在问题 136 7.11 getrlimit 和setrlimit函数 136 7.12 小结 139 习题 140 第8章 进程控制 141 8.1 引言 141 8.2 进程标识 141 8.3 fork函数 142 8.4 vfork 函数 145 8.5 exit函数 147 8.6 wait和waitpid函数 148 8.7 wait3和wait4函数 152 8.8 竞态条件 153 8.9 exec函数 156 8.10 更改用户ID和组ID 160 8.10.1 setreuid 和setregid函数 162 8.10.2 seteuid和 setegid函数 163 8.10.3 组ID 163 8.11 解释器文件 164 8.12 system函数 167 8.13 进程会计 171 8.14 用户标识 175 8.15 进程时间 176 8.16 小结 178 习题 178 第9章 进程关系 180 9.1 引言 180 9.2 终端登录 180 9.2.1 4.3+BSD终端登录 180 9.2.2 SVR4终端登录 182 9.3 网络登录 182 9.3.1 4.3+BSD网络登录 182 9.3.2 SVR4网络登录 183 9.4 进程组 183 9.5 对话期 184 9.6 控制终端 185 9.7 tcgetpgrp 和tcsetpgrp函数 187 9.8 作业控制 187 9.9 shell执行程序 189 9.10 孤儿进程组 193 9.11 4.3+BSD实现 195 9.12 小结 197 习题 197 第10章 信号 198 10.1 引言 198 10.2 信号的概念 198 10.3 signal函数 203 10.3.1 程序起动 205 10.3.2 进程创建 206 10.4 不可靠的信号 206 10.5 中断的系统调用 207 10.6 可再入函数 209 10.7 SIGCLD语义 211 10.8 可靠信号术语和语义 213 10.9 kill和raise函数 213 10.10 alarm和pause函数 214 10.11 信号集 219 10.12 sigprocmask 函数 220 10.13 sigpending函数 222 10.14 sigaction函数 223 10.15 sigsetjmp 和siglongjmp函数 226 10.16 sigsuspend函数 229 10.17 abort函数 234 10.18 system函数 235 10.19 sleep函数 240 10.20 作业控制信号 241 10.21 其他特征 243 10.21.1 信号名字 243 10.21.2 SVR4信号处理程序的附 加参数 244 10.21.3 4.3+BSD信号处理程序的附 加参数 244 10.22 小结 244 习题 244 第11章 终端I/O 246 11.1 引言 246 11.2 综述 246 11.3 特殊输入字符 250 11.4 获得和设置终端属性 254 11.5 终端选择标志 254 11.6 stty命令 258 11.7 波特率函数 259 11.8 行控制函数 260 11.9 终端标识 260 11.10 规范方式 263 11.11 非规范方式 266 11.12 终端的窗口大小 270 11.13 termcap, terminfo和 curses 271 11.14 小结 272 习题 272 第12章 高级I/O 273 12.1 引言 273 12.2 非阻塞I/O 273 12.3 记录锁 275 12.3.1 历史 276 12.3.2 fcntl记录锁 276 12.3.3 锁的隐含继承和释放 280 12.3.4 4.3+BSD的实现 281 12.3.5 建议性锁和强制性锁 284 12.4 流 288 12.4.1 流消息 289 12.4.2 putmsg和putpmsg函数 290 12.4.3 流ioctl操作 291 12.4.4 write至流设备 294 12.4.5 写方式 294 12.4.6 getmsg和getpmsg函数 294 12.4.7 读方式 295 12.5 I/O多路转接 296 12.5.1 select函数 298 12.5.2 poll函数 301 12.6 异步I/O 303 12.6.1 SVR4 303 12.6.2 4.3+BSD 303 12.7 readv和writev函数 304 12.8 readn和writen函数 306 12.9 存储映射I/O 307 12.10 小结 311 习题 311 第13章 精灵进程 312 13.1 引言 312 13.2 精灵进程的特征 312 13.3 编程规则 313 13.4 出错记录 314 13.4.1 SVR4流log驱动程序 315 13.4.2 4.3+BSD syslog设施 316 13.5 客户机-服务器模型 319 13.6 小结 319 习题 319 第14章 进程间通信 320 14.1 引言 320 14.2 管道 320 14.3 popen和pclose函数 325 14.4 协同进程 330 14.5 FIFO 333 14.6 系统V IPC 335 14.6.1 标识符和关键字 336 14.6.2 许可权结构 337 14.6.3 结构限制 337 14.6.4 优点和缺点 337 14.7 消息队列 338 14.8 信号量 342 14.9 共享存储 346 14.10 客户机-服务器属性 351 14.11 小结 353 习题 353 第15章 高级进程间通信 355 15.1 引言 355 15.2 流管道 355 15.3 传送文件描述符 358 15.3.1 SVR4 360 15.3.2 4.3BSD 361 15.3.3 4.3+BSD 364 15.4 open服务器第1版 366 15.5 客户机-服务器连接函数 371 15.5.1 SVR4 372 15.5.2 4.3+BSD 375 15.6 open服务器第2版 378 15.7 小结 385 习题 385 第16章 数据库函数库 386 16.1 引言 386 16.2 历史 386 16.3 函数库 386 16.4 实现概述 388 16.5 集中式或非集中式 390 16.6 并发 391 16.6.1 粗锁 391 16.6.2 细锁 391 16.7 源码 392 16.8 性能 409 16.8.1 单进程的结果 410 16.8.2 多进程的结果 410 16.9 小结 412 习题 412 第17章 与PostScript打印机通信 413 17.1 引言 413 17.2 PostScript通信机制 413 17.3 假脱机打印 415 17.4 源码 417 17.5 小结 434 习题 434 第18章 调制解调器拨号器 435 18.1 引言 435 18.2 历史 435 18.3 程序设计 436 18.4 数据文件 437 18.5 服务器设计 439 18.6 服务器源码 439 18.7 客户机设计 463 18.7.1 终端行规程 463 18.7.2 一个进程还是两个进程 464 18.8 客户机源码 465 18.9 小结 474 习题 474 第19章 伪终端 476 19.1 引言 476 19.2 概述 476 19.2.1 网络登录服务器 477 19.2.2 script程序 478 19.2.3 expect程序 479 19.2.4 运行协同进程 479 19.2.5 观看长时间运行程序的输出 479 19.3 打开伪终端设备 480 19.3.1 SVR4 481 19.3.2 4.3+BSD 482 19.4 pty_fork函数 484 19.5 pty程序 486 19.6 使用pty程序 489 19.6.1 utmp文件 489 19.6.2 作业控制交互 489 19.6.3 检查长时间运行程序的输出 491 19.6.4 script程序 491 19.6.5 运行协同进程 492 19.6.6 用非交互模式驱动交互式 程序 492 19.7 其他特性 494 19.7.1 打包模式 494 19.7.2 远程模式 494 19.7.3 窗口大小变化 495 19.7.4 信号发生 495 19.8 小结 495 习题 495 附录A 函数原型 497 附录B 其他源代码 512 附录C 习题答案 518 参考书目 536

    5
    48
    13.87MB
    2011-11-08
    3
  • GNU make中文手册

    本文比较完整的讲述GNU make工具,涵盖GNU make的用法、语法。同时重点讨论如何为一个工程编写Makefile。作为一个Linux程序员,make工具的使用以及编写Makefile是必需的。系统、详细讲述make的中文资料比较少,出于对广大中文Linuxer的支持,本人在工作之余,花了18个多月时间完成对“info make”的翻译整理,完成这个中文版手册。本书不是一个纯粹的语言翻译版本,其中对GNU make的一些语法和用法根据我个人的工作经验进行了一些详细分析和说明,也加入了一些个人的观点和实践总结。本书的所有的例子都可以在支持V3.8版本的GNU make的系统中正确执行。

    0
    49
    1.34MB
    2011-11-06
    10
  • 手把手教你把Vim改装成一个IDE编程环境

    Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了, 我今天教大家把gvim改装成一个简易IDE, 说它"简易"是界面上看起来"简易", 但功能绝对不比一个好的IDE差, 该有的功能都有, 不该有的功能也有, 你就自己没事偷着乐吧, 下面我开始介绍今天的工作了.

    5
    43
    1.63MB
    2011-11-06
    10
  • 分享宗师

    成功上传21个资源即可获取
关注 私信
上传资源赚积分or赚钱