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

  • 购买积分:14 如何计算积分?
  • 作  者:毛曙福编著
  • 出 版 社:北京:国防工业出版社
  • 出版年份:2001
  • ISBN:7118024392
  • 页数:403 页
图书介绍:本书分为四大部分:Linux系统管理、Linux系统编程、Linux网络编辑和GTK图形界面编程。分别介绍了对用户的管理,对文件系统的管理和网络服务器的配置;Linux文件系统,Linux文件系统调用,Linux设备文件;Linux的网络应用编程;GTK图形界面编程。

第1章 Linux系统管理 1

1.1 登录与注销 1

1.1.1 登录Linux 1

1.1.2 更改口令 1

1.1.3 了解shell 2

1.1.4 了解shell环境 3

1.1.5 配置shell环境 4

1.1.6 注销 4

1.2 信息查询命令 5

1.2.1 date命令 5

1.2.3 du命令 6

1.2.2 df命令 6

1.2.4 file命令 7

1.2.5 hostname命令 7

1.2.6 id命令 8

1.2.7 ps命令 8

1.2.8 quota命令 9

1.2.9 stty命令 9

1.2.10 time命令 10

1.2.11 ttY命令 10

1.2.12 w命令 10

1.2.13 whereis命令 11

1.2.14 who命令 11

1.4 管理用户 12

1.3.2 使用LILO 12

1.3 Linux装载程序LILO 12

1.3.1 配置LILO 12

1.4.1 添加用户 13

1.4.2 使用adduser命令 13

1.4.3 设置用户口令 13

1.4.4 删除用户 14

1.5 管理用户组 14

1.5.1 添加用户组 14

1.5.2 删除用户组 15

1.6 管理文件系统 15

1.6.1 安装文件系统 15

1.6.2 卸下文件系统 16

1.7.1 了解TCP/IP配置文件 17

1.6.3 维护文件系统 17

1.7 配置TCP/IP网络 17

1.7.2 主机配置文件 18

1.7.3 初始化以太网接口 18

1.7.4 用ifconfig检查网络接口 19

1.7.5 配置软件回送接口 20

1.7.6 配置网络接口 20

1.8 小结 20

第2章 网络服务器的配置 21

2.1 配置FTP服务器 21

2.1.1 FTP服务器简介 21

2.1.2 安装FTP服务器 21

2.1.3 查看FTP服务器的设置 22

2.1.4 配置访问控制文件ftpaccess 23

2.1.5 配置用户控制文件ftpusers 28

2.1.6 配置主机控制文件ftphosts 29

2.1.7 测试服务器是否正常工作 29

2.1.8 wu-ftp提供的几个程序 30

2.2 配置WWW服务器 30

2.2.1 WWW服务器简介 30

2.2.2 Apache服务器介绍 31

2.2.3 安装Apache服务器 31

2.2.4 配置服务器控制文件httpd.conf 31

2.2.5 配置访问控制文件access.conf 37

2.2.6 配置资源控制文件srm.Conf 38

2.2.7 运行服务器程序 42

2.2.9 浏览个人主页 43

2.2.8 测试服务器运行情况 43

2.3 小结 44

第3章 Linux文件系统 45

3.1 目录 45

3.1.1 目录结构 45

3.1.2 getcwd函数 46

3.1.3 读取目录 47

3.2 文件 49

3.2.1 文件的存储 49

3.2.2 文件的存储权限 50

3.2.3 stat和fstat函数 51

3.2.4 得到用户的信息 55

3.3.1 ustat函数 58

3.3 文件系统信息 58

3.3.2 statfs和fstatfs函数 60

3.4 小结 62

第4章 Linux文件系统调用 63

4.1 文件描述符 63

4.2 open和close函数 63

4.3 read和write函数 64

4.4 lseek函数 67

4.5 link和unlink函数 71

4.6 access函数 72

4.7 chmod,chown和chdir函数 74

4.8 mkdir和rmdir函数 75

4.9 mknod函数 75

4.10 dup和dup2函数 76

4.11 小结 77

第5章 Linux设备文件 78

5.1 设备文件简介 78

5.2 设备文件的创建 78

5.3 终端设备文件 78

5.3.1 终端设备文件的读写 78

5.3.2 终端设备文件的控制 80

5.4 软盘设备文件 87

5.4.1 软盘设备文件的读写 87

5.4.2 软盘的外挂和sync函数 90

5.5 小结 93

6.1.1 task-struct结构 94

6.1 Linux中的进程 94

第6章 Linux进程管理 94

6.1.2 进程状态 95

6.1.3 进程标识 96

6.1.4 进程调度 96

6.1.5 Linux进程调度算法 97

6.2 Linux进程系统调用 97

6.2.1 fork与vfork函数 97

6.2.2 exec函数 101

6.2.3 exit与_exit函数 104

6.2.4 wait与waitpid函数 104

6.3 小结 105

7.2 信号类别 106

7.1 信号简介 106

第7章 信号处理 106

7.3 关于信号的系统调用 107

7.3.1 kill命令及kill函数 107

7.3.2 有关信号集合的调用 108

7.3.3 signal与sigaction函数 110

7.3.4 信号处理的另外一些调用 112

7.3.5 pause与sigsuspend函数 113

7.3.6 siglongimp与sigsetjmp函数 118

7.4 小结 120

第8章 基本进程间通信 121

8.1 管道通信 121

8.1.1 普通管道与pipe函数 121

8.1.2 命名管道与mknod函数 124

8.2 消息 129

8.2.1 msgget函数 129

8.2.2 msgctl函数 129

8.2.3 msgsnd和msgrcv函数 130

8.3 小结 134

第9章 临界区与高级进程间通信 135

9.1 竞争现象与临界区 135

9.2 信号量 136

9.2.1 简介 136

9.2.2 信号量集 137

9.2.3 semget函数 137

9.2.4 semctl函数 138

9.2.5 semop函数 139

9.3 共享内存 142

9.3.1 shmget函数 142

9.3.2 shmat函数 142

9.3.3 shmdt函数 143

9.3.4 shmctl函数 143

9.3.5 生产者/消费者问题 144

9.4 小结 151

第10章 Linux线程 152

10.1 线程简介 152

10.1.1 传统进程的局限性 152

10.1.2 线程的动机 152

10.1.4 线程概念 153

10.1.5 用户线程与内核线程 153

10.1.3 多线程和多处理器 153

10.2 线程管理 155

10.2.1 pthread_create函数 155

10.2.2 pthread_self函数 156

10.2.3 pthread_exit函数 156

10.2.4 pthread_join函数 156

10.2.5 线程的例子 156

10.3 线程属性 159

10.3.1 线程属性对象的初始化和销毁 160

10.3.2 线程堆栈的大小 161

10.3.3 线程堆栈的地址 161

10.3.4 线程的拆卸状态 161

10.3.7 线程的调度策略 162

10.3.5 线程的作用域 162

10.3.6 线程的继承性 162

10.3.8 线程的调度参数 163

10.3.9 得到线程的属性 163

10.4 小结 166

第11章 TCP/IP简介 167

11.1 网络简介 167

11.2 TCP/IP及相关协议 167

11.2.1 IP协议 167

11.2.2 ICMP协议 169

11.2.3 ARP协议 171

11.2.4 TCP协议 172

11.2.5 UDP协议 175

11.2.6 DNS协议 176

11.3 小结 179

第12章 各种转换 180

12.1 网络字节序转换函数 180

12.2 IP地址的转换 180

12.2.1 inet_aton与inet_addr函数 180

12.2.2 inet_pton与inet_ntop函数 181

12.3 名字地址的转换 182

12.3.1 gethostbyname函数与gethostbyname2函数 182

12.3.2 gethostbyaddr函数 183

12.3.3 uname和gethostname函数 183

12.3.4 得到主机的信息 184

12.4 服务名的转换 186

12.4.2 getservbyport函数 187

12.4.1 getservbyname函数 187

12.5 高级地址转换 188

12.5.1 getaddrinfo函数 188

12.5.2 getnameinfo函数 190

12.6 小结 190

第13章 套接字编程 191

13.1 套接字简介 191

13.2 套接字编程调用 191

13.2.1 socket函数 192

13.2.2 connect函数 193

13.2.3 bind函数 193

13.2.4 listen函数 194

13.2.5 accept函数 194

13.2.7 recv函数 195

13.2.6 read函数 195

13.2.8 recvfrom函数 196

13.2.9 write函数 196

13.2.10 send函数 196

13.2.11 sendto函数 196

13.2.12 close函数 197

13.2.13 getsockname和getpeername函数 197

13.3 gettime程序 198

13.4 ourhead.h文件 200

13.5 小结 202

14.1 TCP套接字编程 203

14.1.1 简介 203

第14章 客户机服务器编程 203

14.1.2 客户机程序的简化 204

14.1.3 服务器程序的并发 205

14.1.4 ECHO客户机程序的TCP版本 207

14.1.5 ECHO服务器程序的TCP版本 208

14.2 UDP套接字编程 211

14.2.1 简介 211

14.2.2 客户机程序的简化 211

14.2.3 ECHO客户机程序的UDP版本1 213

14.2.4 ECHO客户机程序的UDP版本2 215

14.2.5 ECHO服务器程序的UDP版本 218

14.3 小结 219

15.1.2 select函数 220

15.1.1 多协议服务器简介 220

15.1 多协议服务器 220

第15章 复杂服务器设计 220

15.1.3 ECHO服务器的TCP/UCP合并版 221

15.1.4 ECHO客户机的TCP/UCP合并版 225

15.2 多服务服务器 227

15.2.1 多服务服务器简介 227

15.2.2 ECHO,DAYTIME多服务服务器程序 227

15.2.3 ECHO,DAYTIME多服务客户机程序 231

15.2.4 多协议多服务服务器程序 233

15.2.5 多协议多服务客户机程序 239

15.3 小结 241

第16章 远程过程调用 242

16.1 简介 242

16.2.2 初始化XDR流 246

16.2.3 释放XDR流 246

16.2 外部数据表示(XDR) 246

16.2.1 XDR工作原理 246

16.2.4 整数的XDR表示 247

16.2.5 无符号整数的XDR表示 247

16.2.6 枚举型的XDR表示 248

16.2.7 布尔量的XDR表示 248

16.2.8 浮点数的XDR表示 248

16.2.9 双精度浮点数的XDR表示 249

16.2.10 字符的XDR表示 249

16.2.11 字符串的XDR表示 250

16.2.12 定长数组的XDR表示 250

16.2.13 变长数组的XDR表示 251

16.2.14 XDR的例子 252

16.3 小结 255

第17章 RPC编程 256

17.1 RPC编程简介 256

17.1.1 RPC程序号、版本号和过程号 256

17.1.2 网络选择 256

17.1.3 rpcbind设施 258

17.2 RPC调用 259

17.2.1 clnt_create函数 259

17.2.2 clnt_call函数 260

17.2.3 svcudp_create函数 260

17.2.4 svctcp_create函数 260

17.2.7 svc_sendreply函数 261

17.2.5 svc_register函数 261

17.2.6 svc_run函数 261

17.3 远程计算器 262

17.3.1 头文件xdr_math.h 262

17.3.2 客户机程序 263

17.3.3 服务器程序 265

17.3.4 程序的编译和运行 267

17.4 小结 268

第18章 用rpcgen生成分布式程序 269

18.1 rpcgen简介 269

18.2 rpcgen的输入和输出 269

18.3.2 运行rpcgen 270

18.3.1 建立.x文件 270

18.3 rpcgen编程步骤 270

18.3.3 rpcgen生成的math.h文件 271

18.3.4 rpcgen生成的math_xdr.c文件 272

18.3.5 rpcgen生成的math_clnt.c文件 273

18.3.6 rpcgen生成的math_svc.c文件 274

18.3.7 rpcgen生成的math_server.c文件 276

18.3.8 rpcgen生成的math_client.c文件 277

18.3.9 rpcgen生成的makefile.math文件 280

18.4 小结 281

第19章 RPC认证 282

19.1 简介 282

19.2 取得客户机的认证风格 282

19.3 AUTH_NONE认证 286

19.4 AUTH_SYS认证 287

19.4.1 设置AUTH_SYS认证 287

19.4.2 AUTH_SYS认证的例子 287

19.5 AUTH_DES认证 293

19.5.1 设置AUTH_DES认证 293

19.5.2 AUTH_DES认证的例子 295

19.6 小结 298

第20章 GTK图形界面编程 299

20.1 CTK简介 299

20.2 第一个GUI应用程序 299

20.2.1 初始化 300

20.2.2 建立窗口 300

20.2.4 设置窗口大小 301

20.2.5 设置边框 301

20.2.3 设置标题 301

20.2.6 第一个GTK程序 302

20.2.7 程序的编译和执行 302

20.2.8 增加对信号的处理 303

20.3 增加一个按钮 305

20.4 小结 307

第21章 按钮与封装 308

21.1 按钮 308

21.1.1 建立按钮 308

21.1.2 按钮信号处理 308

21.1.3 一个按钮的例子 309

21.2 双态按钮 310

21.3 复选按钮 313

21.4 单选按钮 313

21.5 封装构件 315

21.5.1 封装简介 315

21.5.2 用盒子封装构件 316

21.5.3 盒子封装的例子 316

21.5.4 用表格封装构件 318

21.5.5 表格封装的例子 320

21.6 图像按钮 322

21.7 小结 324

22.1.2 设置标签正文 325

22.1.1 创建标签 325

22.1.3 得到标签正文 325

22.1 标签 325

第22章 GTK常用构件 325

22.2 编辑框 326

22.2.1 创建编辑框 326

22.2.2 得到编辑框正文 326

22.2.3 改变编辑框正文 326

22.2.4 设置编辑框属性 326

22.2.5 编辑框的信号 327

22.2.6 编辑框的例子 327

22.3 列表框 330

22.3.1 创建列表框 330

22.3.2 操作列表框 330

22.4 复合框 331

22.3.3 列表框的信号 331

22.4.1 创建和操作复合框 332

22.4.2 复合框的信号 332

22.5 进度条 332

22.5.1 建立进度条 333

22.5.2 用定时器测试进度条 333

22.6 框架 336

22.6.1 创建框架 336

22.6.2 框架的例子 337

22.7 小结 338

第23章 状态条、工具条和菜单 340

23.1 状态条 340

23.1.1 创建状态条 340

23.1.2 向状态条添加表项 340

23.1.3 从状态条移走表项 340

23.1.4 状态条的例子 341

23.2 工具条 342

23.2.1 创建工具条 343

23.2.2 向工具条增加按钮 343

23.2.3 向工具条上添加像元图 344

23.2.4 工具条的例子 345

23.3 菜单 346

23.3.1 手工建立菜单 347

23.3.2 用套件建立菜单 351

23.3.3 检查菜单项 355

23.3.4 选择菜单项 357

23.4 小结 359

24.1 初步建立对话框 361

第24章 对话框 361

24.2 两种类型的对话框 362

24.2.1 无模式对话框 362

24.2.2 模式对话框 366

24.3 文件选择对话框 369

24.3.1 创建文件选择对话框 369

24.3.2 文件选择对话框的例子 369

24.3.3 结构GtkFileSelection的定义 372

24.4 小结 372

第25章 GTK式样 373

25.1 简介 373

25.2 颜色 373

25.2.1 从系统分配颜色 373

25.2.2 创建颜色选择对话框 374

25.2.3 颜色选择对话框的例子 375

25.3 字体 379

25.3.1 创建字体选择对话框 380

25.3.2 字体选择对话框的例子 380

25.4 小结 385

第26章 高级GTK构件 386

26.1 树构件 386

26.1.1 树构件的创建 386

26.1.2.树构件的信号 387

26.1.3 树构件的例子 387

26.2 列表构件 391

26.2.1 创建列表构件 391

26.2.4 删除行 392

26.2.5 提高插入和删除速度 392

26.2.3 修改列表构件中的数据 392

26.2.2 向列表构件增加数据 392

26.2.6 行与列参数 393

26.2.7 标题栏 393

26.2.8 插入像元图 394

26.2.9 列表构件的例子 394

26.3 笔记本构件 397

26.3.1 创建笔记本构件 397

26.3.2 操作页 397

26.3.3 增加和删除页 398

26.3.4 笔记本构件的例子 399

26.4 小结 402

参考文献 403