《Linux C程序员指南》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:任永铮编著
  • 出 版 社:北京:国防工业出版社
  • 出版年份:2000
  • ISBN:7118022438
  • 页数:373 页
图书介绍:

第1章 Linux C程序概论 1

1.1 Linux简介 1

1.1.1 为什么选择Linux 1

1.1.2 为什么选择C语言 1

1.2 开发第一个程序 2

1.3 怎样获取帮助信息 3

1.3.1 使用man命令 3

1.3.2 指定man的搜索路径 4

1.3.3 一个小技巧 5

1.4 Linux C程序的框架 5

1.4.1 关于程序的存放目录 5

1.4.2 头文件 5

1.4.3 函数库 6

1.4.4 静态函数库 7

1.4.5 共享函数库 9

1.5 一些公理 9

第2章 文件操作 11

2.1 Linux文件结构 11

2.1.1 文件与目录 11

2.1.2 文件与设备 12

2.2 系统调用和设备驱动程序 13

2.3 库函数 13

2.4 低级文件操作 14

2.4.1 write 14

2.4.2 read 15

2.4.3 open 16

2.4.4 umask 17

2.4.5 close 18

2.4.6 ioctl 18

2.4.7 例子程序copy_file 19

2.4.8 其他与文件操作有关的系统调用 20

2.5 标准输入输出库 22

2.5.1 fopen 23

2.5.2 fread 23

2.5.3 fwrite 24

2.5.4 felose 24

2.5.5 fflush 24

2.5.6 fseek 24

2.5.7 fgete,getc,getchar 25

2.5.8 fputc,putc,putchar 25

2.5.9 fgets,gets 25

2.5.10 格式输入输出 25

2.5.11 其他流操作函数 28

2.5.12 流错误信息 29

2.5.13 流与文件描述符 30

2.6 一些与文件有关的函数 30

2.6.1 chmod 30

2.6.2 chown 30

2.6.3 unlink,link,symlink 31

2.6.4 mkdir,rmdir 31

2.6.5 chdir,getcwd 31

2.6.6 错误信息 32

2.7 搜索路径的例子程序 33

2.7.1 opendir 33

2.7.2 readdir 33

2.7.3 telldir 33

2.7.4 seekdir 34

2.7.5 closedir 34

2.7.6 例子程序show_dir 34

2.8 两个特殊的函数 37

2.8.1 fcntl 37

2.8.2 mmap 37

第3章 环境变量 41

3.1 程序的参数 41

3.1.1 程序的参数 41

3.1.2 环境变量 44

3.1.3 获取全部的环境变量 47

3.2 时间和日期 48

3.2.1 time 48

3.2.2 gmtime,ctime 49

3.2.3 strftime,strptime 51

3.3 临时文件 54

3.4 主机信息 56

3.4.1 用户信息 56

3.4.2 主机信息 59

3.5 系统日志 60

3.5.1 日志函数 60

3.5.2 配置日志 62

3.6 资源和限制 63

第4章 屏幕开发库curses 68

4.1 curses简介 68

4.2 基本的屏幕输出函数 70

4.2.1 初始化和终止 70

4.2.2 输出 70

4.2.3 读入 71

4.2.4 清屏 71

4.2.5 移动 72

4.2.6 字符属性 72

4.3 响应键盘事件 75

4.3.1 键盘模式 75

4.3.2 读取键盘 75

4.4 多窗口 78

4.4.1 WINDOW结构 78

4.4.2 移动和更新窗口 79

4.4.3 刷新屏幕的优化方法 82

4.5 子窗口 83

4.6 keypad函数 85

4.7 颜色 88

4.8 高级应用:虚屏 90

4.9 curses的帮助 92

第5章 数据管理 100

5.1 内存管理 100

5.1.1 简单的内存分配 100

5.1.2 分配大量的内存 102

5.1.3 空指针 105

5.1.4 释放内存 106

5.1.5 其他分配内存的函数 107

5.2 文件锁 108

5.2.1 创建加锁文件 108

5.2.2 区域加锁 111

5.2.3 加锁之后的读写 113

5.2.4 竞争加锁 119

5.2.5 其他加锁函数 122

5.2.6 死锁 123

5.3 DBM数据库 123

5.3.1 DBM数据库 123

5.3.2 dbm程序 124

5.3.3 dbm基本函数 124

5.3.4 其他dbm函数 128

第6章 开发工具箱 133

6.1 make命令和Makefile文件 133

6.1.1 多文件的编译问题 133

6.1.2 Makefile文件的构成 134

6.1.3 make命令的参数选项 135

6.1.4 依赖关系 135

6.1.5 依赖规则 136

6.1.6 Makefile文件的注释 138

6.1.7 Makefile文件的宏 138

6.1.8 多目标 140

6.1.9 固定规则与后缀规则 142

6.1.10 使用make管理函数库 145

6.1.11 makefile文件和子目录 147

6.1.12 GNU的make和gcc 148

6.2 源代码控制 148

6.2.1 RCS 149

6.2.2 SCCS 155

6.3 怎样写帮助文件 155

6.4 程序维护的一些问题 159

6.4.1 发布软件 159

6.4.2 给程序打补丁 159

6.4.3 其他维护工具 161

6.4.4 tar命令的描述 163

第7章 如何调试程序 164

7.1 错误类型 164

7.1.1 需求错误 164

7.1.2 设计错误 165

7.1.3 编码错误 165

7.2 调试前的准备工作 165

7.2.1 一个含有错误的程序 165

7.2.2 代码检查 168

7.2.3 输出附加信息 168

7.2.4 不需要重新编译的技巧 170

7.2.5 跟踪程序的执行 170

7.3 使用gdb 171

7.3.1 启动gdb 171

7.3.2 执行程序 172

7.3.3 堆栈跟踪 172

7.3.4 检查变量 173

7.3.5 查看源程序 174

7.3.6 设置断点 175

7.3.7 在调试器中打补丁 179

7.3.8 关于gdb的其他功能 181

7.4 其他调试工具 181

7.4.1 不可忽略的警告 181

7.4.2 函数查看工具 183

7.4.3 监管程序的执行 186

7.4.4 变量范围声明 187

7.4.5 内存越界检查 188

第8章 进程与信号 191

8.1 什么是进程 191

8.2 进程的结构 192

8.2.1 进程中的共享与独占 192

8.2.2 进程表 192

8.3 创建新进程 196

8.4 信号 211

8.4.1 如何捕捉信号 212

8.4.2 发送信号 214

8.4.3 信号集合 217

8.4.4 功能强大的sigaction函数 218

第9章 管道 221

9.1 什么是管道 221

9.2 进程管道 222

9.2.1 接收与发送数据 223

9.2.2 操作大量的数据 225

9.2.3 popen是如何实现的 226

9.3 pipe函数 228

9.4 在父、子进程中使用管道 231

9.4.1 利用命令行参数 231

9.4.2 读关闭的管道 234

9.4.3 使用标准输入输出端口 234

9.5 有名管道——FIFO 238

9.5.1 创建有名管道 238

9.5.2 访问有名管道 239

9.5.3 使用open打开有名管道 240

9.5.4 对FIFO的读写 243

9.6 Client/Server模式下的FIFO 247

第10章 IPC机制 253

10.1 信号量 253

10.1.1 信号量的定义 254

10.1.2 一个理论的例子 254

10.1.3 UNIX信号量函数 255

10.2 共享内存 262

10.2.1 概要介绍 262

10.2.2 共享内存函数 263

10.2.3 例子程序 265

10.3 消息队列 269

10.3.1 概要介绍 270

10.3.2 消息队列函数 270

10.3.3 例子程序 272

10.4 IPC外部命令 275

10.4.1 信号量 275

10.4.2 共享内存 276

10.4.3 消息队列 276

第11章 套接口 277

11.1 概要 278

11.1.1 套接口的连接 278

11.1.2 套接口属性 283

11.2 套接口函数 284

11.2.1 创建套接口 285

11.2.2 套接口地址 286

11.2.3 给套接口命名 287

11.2.4 建立监听队列 288

11.2.5 接受连接 289

11.2.6 建立连接请求 289

11.2.7 关闭套接口 291

11.2.8 套接口通信 291

11.2.9 主机和网络字节顺序 294

11.3 网络信息 296

11.3.1 主机信息 296

11.3.2 服务信息 299

11.4 套接口选项 301

11.5 多客户 305

11.6 select函数 308

11.6.1 函数介绍 308

11.6.2 终端上的应用 310

11.6.3 多客户套接口连接的应用 311

11.7 inetd的秘密 315

11.8 UDP通信简介 320

第12章 Linux下的CGI 324

12.1 概述 324

12.2 一些相关的HTML标记 325

12.2.1 FORM元件 325

12.2.2 FORM标记 326

12.2.3 INPUT标记 327

12.3 一个简单的主页 329

12.4 向WWW服务器发送信息 332

12.5 如何编写CGI程序 333

12.5.1 相关的环境变量 333

12.5.2 使用shell编写CGI程序 334

12.5.3 如何使用C开发CGI程序 338

12.5.4 使用Perl开发CGI程序 345

12.6 以HTML格式反馈客户 347

12.7 几个技巧和注意事项 354

12.7.1 确认CGI程序已经退出 354

12.7.2 重定向客户 354

12.7.3 动态图片 355

12.7.4 编写小程序 355

附录A 开发MySQL应用程序 356

Ⅰ 简介 356

Ⅱ 创建库和表 357

Ⅲ 向表中增加记录 360

Ⅳ 查看表中数据 362

附录B 使用Libpcap函数库 367

Ⅰ 简介 367

Ⅱ 几个重要的API 368

Ⅲ 一个例子程序 369

Ⅳ 其他API的介绍 373