图书介绍
Unix/Linux编程实践教程2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- (美)Bruce Molay著;杨宗源,黄海涛译 著
- 出版社: 北京:清华大学出版社
- ISBN:7302096139
- 出版时间:2004
- 标注页数:495页
- 文件大小:47MB
- 文件页数:515页
- 主题词:UNIX操作系统-程序设计-高等学校-教材;Linux操作系统-程序设计-高等学校-教材
PDF下载
下载说明
Unix/Linux编程实践教程PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
1.1 介绍1
1.2 什么是系统编程1
1.2.1简单的程序模型1
第1章 Unix系统编程概述1
1.2.2系统模型2
1.2.3操作系统的职责3
1.2.4为程序提供服务4
1.3理解系统编程4
1.3.1 系统资源4
1.3.2 目标:理解系统编程5
1.3.3方法:通过三个问题来理解5
1.4.2登录-运行程序-注销6
1.4从用户的角度来理解Unix6
1.4.1 Unix能做些什么6
1.4.3 目录操作8
1.4.4文件操作10
1.5从系统的角度来看Unix12
1.5.1用户和程序之间的连接方式12
1.5.2 网络桥牌12
1.5.3 bc:Unix的计算器13
1.5.4从bc/dc到Web16
1.6动手实践16
1.7.3 Unix的发展历程23
1.7.2 Unix的概要图23
1.7.1接下来的工作步骤23
1.7工作步骤与概要图23
小结24
第2章 用户、文件操作与联机帮助:编写who命令25
2.1介绍25
2.2关于命令who26
2.3 问题1:who命令能做些什么27
2.4问题2:who命令是如何工作的28
2.5 问题3:如何编写who32
2.5.1 问题:如何从文件中读取数据结构33
2.5.2 答案:使用open、read和close34
2.5.3 编写who1.c36
2.5.4 显示登录信息37
2.5.5 编写who2.c39
2.5.6 回顾与展望44
2.6 编写cp(读和写)44
2.6.1 问题1:cp命令能做些什么44
2.6.2问题2:cp命令是如何创建/重写文件的44
2.6.3问题3:如何编写cp45
2.6.4 Unix编程看起来好像很简单47
2.7提高文件I/O效率的方法:使用缓冲48
2.7.1缓冲区的大小对性能的影响48
2.7.2为什么系统调用需要很多时间48
2.7.3低效率的who2.c49
2.7.4在who2.c中运用缓冲技术50
2.8内核缓冲技术53
2.9文件读写54
2.9.1注销过程:做了些什么54
2.9.2注销过程:如何工作的54
2.9.3改变文件的当前位置55
2.9.4编写终端注销的代码57
2.10处理系统调用中的错误58
小结59
3.2问题1:ls命令能做什么63
3.2.1 1s可以列出文件名和文件的属性63
3.1介绍63
第3章 目录与文件属性:编写Is63
3.2.2列出指定目录或文件的信息64
3.2.3经常用到的命令行选项65
3.2.4问题1的答案65
3.3文件树65
3.4问题2:ls是如何工作的66
3.4.1什么是目录66
3.4.2是否可以用open、read和close来操作目录66
3.4.3如何读目录的内容67
3.5问题3:如何编写ls69
3.6编写ls-l71
3.6.1 问题1:ls-l能做些什么71
3.6.3用stat得到文件信息72
3.6.2问题2:ls-l是如何工作的72
3.6.4 stat提供的其他信息74
3.6.5如何实现75
3.6.6将模式字段转换成字符75
3.6.7将用户/组ID转换成字符串79
3.6.8 编写ls2.c81
3.7三个特殊的位86
3.7.1 set-user-ID位86
3.7.2 set-group-ID位87
3.7.3 sticky位87
3.7.4用ls-1看到的特殊属性87
3.9.1文件类型88
3.9设置和修改文件的属性88
3.8 ls小结88
3.9.2许可位与特殊属性位89
3.9.3文件的链接数90
3.9.4文件所有者与组90
3.9.5文件大小91
3.9.6 时间91
3.9.7文件名91
小结92
第4章 文件系统:编写pwd96
4.1介绍96
4.2.3文件操作命令97
4.2.2 目录命令97
4.2.1 目录和文件97
4.2从用户的角度看文件系统97
4.2.4针对目录树的命令99
4.2.5 目录树的深度几乎没有限制99
4.2.6 Unix文件系统小结100
4.3 Unix文件系统的内部结构100
4.3.1第一层抽象:从磁盘到分区100
4.3.2第二层抽象:从磁盘到块序列100
4.3.3第三层抽象:从块序列到三个区域的划分100
4.3.4文件系统的实现:创建一个文件的过程101
4.3.5文件系统的实现:目录的工作过程102
4.3.6文件系统的实现:cat命令的工作原理104
4.3.7 i-节点和大文件105
4.3.8 Unix文件系统的改进106
4.4理解目录107
4.4.1理解目录结构107
4.4.2与目录树相关的命令和系统调用109
4.5编写pwd113
4.5.1 pwd的工作过程113
4.5.2 pwd的一种版本114
4.6多个文件系统的组合:由多棵树构成的树116
4.6.1装载点117
4.6.2多重i-节点号和设备交叉链接118
4.6.3符号链接119
小结120
第5章 连接控制:学习stty124
5.1为设备编程124
5.2设备就像文件124
5.2.1设备具有文件名125
5.2.2设备和系统调用125
5.2.3例子:终端就像文件126
5.2.4设备文件的属性126
5.2.5编写write程序127
5.2.6设备文件和i-节点128
5.3设备与文件的不同之处129
5.4.1属性1:缓冲130
5.4磁盘连接的属性130
5.4.2属性2:自动添加模式132
5.4.3用open控制文件描述符133
5.4.4磁盘连接小结134
5.5终端连接的属性135
5.5.1终端的I/O并不如此简单135
5.5.2终端驱动程序137
5.5.3 stty命令137
5.5.4编写终端驱动程序:关于设置138
5.5.5编写终端驱动程序:关于函数139
5.5.6编写终端驱动程序:关于位140
5.5.7编写终端驱动程序:几个程序例子142
5.6其他设备编程:ioctl146
5.5.8终端连接小结146
5.7文件、设备和流147
小结147
第6章 为用户编程:终端控制和信号153
6.1软件工具与针对特定设备编写的程序153
6.2终端驱动程序的模式154
6.2.1规范模式:缓冲和编辑155
6.2.2非规范处理156
6.2.3终端模式小结157
6.3编写一个用户程序:play_again.c158
6.4.2信号是什么168
6.4.1 Ctrl-C做什么168
6.4信号168
6.4.3进程该如何处理信号170
6.4.4信号处理的例子171
6.5为处理信号做准备:play_again4.c173
6.6进程终止176
6.7为设备编程176
小结176
第7章 事件驱动编程:编写一个视频游戏180
7.1视频游戏和操作系统180
7.2任务:单人弹球游戏(Pong)182
7.3屏幕编程:curses库182
7.3.1介绍curses182
7.4 时间编程:sleep185
7.3.2 curses内部:虚拟和实际屏幕185
7.5时钟编程1:Alarms188
7.5.1添加时延:sleep189
7.5.2 sleep()是如何工作的:使用Unix中的Alarms189
7.5.3调度将要发生的动作191
7.6时间编程2:间隔计时器191
7.6.1添加精度更高的时延:usleep192
7.6.2三种计时器:真实、进程和实用192
7.6.3两种间隔:初始和重复192
7.6.4用间隔计时器编程193
7.6.5计算机有几个时钟196
7.6.6计时器小结197
7.7.2处理多个信号198
7.7信号处理1:使用signal198
7.7.1早期的信号处理机制198
7.7.3测试多个信号200
7.7.4信号机制其他的弱点202
7.8信号处理2:sigaction203
7.8.1处理多个信号:sigaction203
7.8.2信号小结206
7.9 防止数据损毁(Data Corruption)206
7.9.1数据损毁的例子206
7.9.2临界区(Critical Sections)206
7.9.3阻塞信号:sigprocmask和sigsetops207
7.9.4重入代码(Reentrant Code):递归调用的危险208
7.9.5视频游戏中的临界区208
7.10 kill:从另一个进程发送的信号209
7.11.1 bou nceld.c:在一条线上控制动画210
7.11使用计时器和信号:视频游戏210
7.11.2 bounce2d.c:两维动画213
7.11.3完成游戏218
7.12输入信号:异步I/O218
7.12.1使用异步I/O218
7.12.2 方法1:使用O_ASYNC218
7.12.3方法2:使用aio_read221
7.12.4弹球程序中需要异步读入吗224
7.12.5异步输入、视频游戏和操作系统224
小结224
8.1进程=运行中的程序228
第8章 进程和程序:编写命令解释器sh228
8.2通过命令ps学习进程229
8.2.1 系统进程231
8.2.2进程管理和文件管理232
8.2.3内存和程序232
8.3 shell:进程控制和程序控制的一个工具233
8.4 shell是如何运行程序的234
8.4.1 shell的主循环234
8.4.2 问题1:一个程序如何运行另一个程序235
8.4.3问题2:如何建立新的进程240
8.4.4问题3:父进程如何等待子进程的退出244
8.4.5小结:shell如何运行程序249
8.5实现一个shell:psh2.c250
8.6思考:用进程编程254
8.7 exit和exec的其他细节255
8.7.1进程死亡:exit和_exit255
8.7.2 exec家族256
小结257
第9章 可编程的shell、shell变量和环境:编写自己的shell260
9.1 shell编程260
9.2什么是以及为什么要使用shell脚本语言260
9.3 smshl——命令行解析263
9.4.1 if语句做些什么270
9.4 shell中的流程控制270
9.4.2 if是如何工作的271
9.4.3在smsh中增加if272
9.4.4 smsh2.c:修改后的代码273
9.5 shell变量:局部和全局278
9.5.1使用shell变量279
9.5.2变量的存储280
9.5.3 增加变量命令:Built-ins280
9.5.4效果如何283
9.6环境:个性化设置284
9.6.1使用环境285
9.6.2什么是环境以及它是如何工作的286
9.6.3在smsh中增加环境处理288
9.6.4 varlib.c的代码290
9.7 已实现的shell的功能295
小结296
第10章 I/O重定向和管道299
10.1 shell编程299
10.2一个shell应用程序:监视系统用户300
10.3 标准I/O与重定向的若干概念301
10.3.1概念1:3个标准文件描述符302
10.3.2默认的连接:tty302
10.3.3程序都输出到stdout303
10.3.4重定向I/O的是shell而不是程序303
10.3.6概念2:“最低可用文件描述符(Lowest-Available-fd)”原则304
10.3.5理解I/O重定向304
10.3.7两个概念的结合305
10.4如何将stdin定向到文件305
10.4.1方法1:close then open305
10.4.2方法2:open..close..dup..close308
10.4.3系统调用dup小结310
10.4.4方法3:open..dup2..close310
10.4.5 shell为其他程序重定向stdin310
10.5为其他程序重定向I/O:who>userlist310
10.6管道编程314
10.6.1创建管道314
10.6.2使用fork来共享管道317
10.6.3使用pipe、fork以及exec318
10.6.4技术细节:管道并非文件320
小结321
第11章 连接到近端或远端的进程:服务器与Socket(套接字)325
11.1产品和服务325
11.2一个简单的比喻:饮料机接口326
11.3 bc:Unix中使用的计算器327
11.3.1 编写bc:pipe、fork、dup、exec328
11.3.2对协同进程的讨论332
11.3.3 fdopen:让文件描述符像文件一样使用332
11.4 popen:让进程看似文件332
11.4.1 popen的功能332
11.4.2实现popen:使用fdopen命令334
11.4.3访问数据:文件、应用程序接口(API)和服务器336
11.5 socket:与远端进程相连337
11.5.1类比:“电话中传来声音:现在时间是338
11.5.2 因特网时间、DAP和天气服务器340
11.5.3服务列表:众所周知的端口341
11.5.4编写timeserv.c:时间服务器342
11.5.5测试timeserv.c347
11.5.6编写timeclnt.c:时间服务客户端347
11.5.7测试timeclnt.c350
11.5.8另一种服务器:远程的ls351
11.6软件精灵356
小结356
12.1服务器设计重点360
12.2三个主要操作360
第12章 连接和协议:编写Web服务器360
12.3操作1和操作2:建立连接361
12.3.1操作1:建立服务器端socket361
12.3.2操作2:建立到服务器的连接362
12.3.3 socklib.c362
12.4操作3:客户/服务器的会话364
12.4.1使用socklib.c的timeserv/timeclnt365
12.4.2第2版的服务器:使用fork366
12.4.3服务器的设计问题:DIY或代理367
12.5编写Web服务器369
12.5.1 Web服务器功能369
12.5.3 Web服务器协议370
12.5.2设计Web服务器370
12.5.4编写Web服务器372
12.5.5运行Web服务器374
12.5.6 Webserv的源程序374
12.5.7比较Web服务器379
小结379
第13章 基于数据报(Datagram)的编程:编写许可证服务器①381
13.1软件控制381
13.2许可证控制简史382
13.3一个非计算机系统实例:轿车管理系统383
13.3.1轿车钥匙管理描述383
13.3.2用客户/服务器方式管理轿车383
13.4.1许可证服务系统:它做些什么384
13.4许可证管理384
13.4.2许可证服务系统:如何工作385
13.4.3一个通信系统的例子386
13.5数据报socket386
13.5.1流与数据报的比较387
13.5.2数据报编程388
13.5.3 sendto和recvfrom的小结393
13.5.4数据报应答394
13.5.5数据报小结396
13.6许可证服务器版本1.0396
13.6.1客户端版本1397
13.6.2服务器端版本1401
13.6.3测试版本1406
13.6.4进一步的工作407
13.7处理现实的问题407
13.7.1处理客户端崩溃407
13.7.2处理服务器崩溃410
13.7.3测试版本2412
13.8分布式许可证服务器414
13.9 Unix 域socket416
13.9.1文件名作为socket地址416
13.9.2使用Unix域socket编程416
13.10小结:socket和服务器419
小结419
14.1 同一时刻完成多项任务423
第14章 线程机制:并发函数的使用423
14.2函数的执行路线424
14.2.1一个单线程程序424
14.2.2一个多线程程序425
14.2.3相关函数小结427
14.3线程间的分工合作428
14.3.1 例1:incrprint.c428
14.3.2 例2:twordcount.c430
14.3.3线程内部的分工合作:小结436
14.4线程与进程437
14.5线程间互通消息438
14.5.1通知选举中心439
14.5.2使用条件变量编写程序440
14.5.3使用条件变量的函数443
14.5.4 回到Web服务器的例子444
14.6多线程的Web服务器444
14.6.1 Web服务器程序的改进445
14.6.2多线程版本允许一个新的功能445
14.6.3 防止僵尸线程(Zombie Threads):独立线程445
14.6.4 Web服务器代码445
14.7线程和动画452
14.7.1使用线程的优点452
14.7.2多线程版本的bounceld.c453
14.7.3基于多线程机制的多重动画:tanimate.c455
14.7.4 tanimate.c中的互斥量458
14.7.5屏幕控制线程459
小结460
第15章 进程间通信(IPC)464
15.1编程方式的选择464
15.2 talk命令:从多个数据源读取数据465
15.2.1 同时从两个文件描述符读取数据465
15.2.2 select系统调用466
15.2.3 select与talk469
15.2.4 select与poll469
15.3通信的选择469
15.3.1一个问题的三种解决方案470
15.3.2通过文件的进程间通信470
15.3.3命名管道471
15.3.4共享内存473
15.3.5各种进程间通信方法的比较475
15.4进程之间的分工合作476
15.4.1文件锁476
15.4.2信号量(Semaphores)480
15.4.3 socket及FIFO与共享的存储487
15.5打印池488
15.5.1多个写者、一个读者488
15.5.2客户/服务器模型489
15.6纵观IPC490
15.7连接与游戏492
小结493
热门推荐
- 3489400.html
- 3146055.html
- 3004785.html
- 1977532.html
- 1234730.html
- 1958816.html
- 3502676.html
- 3465012.html
- 378329.html
- 3570815.html
- http://www.ickdjs.cc/book_3817844.html
- http://www.ickdjs.cc/book_1434994.html
- http://www.ickdjs.cc/book_606922.html
- http://www.ickdjs.cc/book_306113.html
- http://www.ickdjs.cc/book_3430788.html
- http://www.ickdjs.cc/book_650348.html
- http://www.ickdjs.cc/book_583849.html
- http://www.ickdjs.cc/book_1164957.html
- http://www.ickdjs.cc/book_3092431.html
- http://www.ickdjs.cc/book_1957813.html