图书介绍
Linux系统编程 第2版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- (美)ROBERTLOVE著;祝洪凯,李妹芳,付途译 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115346353
- 出版时间:2014
- 标注页数:394页
- 文件大小:58MB
- 文件页数:418页
- 主题词:Linux操作系统
PDF下载
下载说明
Linux系统编程 第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 入门和基本概念1
1.1 系统编程1
1.1.1 为什么要学习系统编程2
1.1.2 系统编程的基础2
1.1.3 系统调用3
1.1.4 C库3
1.1.5 C编译器4
1.2 API和ABI4
1.2.1 API5
1.2.2 ABI5
1.3 标准6
1.3.1 POSIX和SUS的历史6
1.3.2 C语言标准7
1.3.3 Linux和标准8
1.3.4 本书和标准8
1.4 Linux编程的概念9
1.4.1 文件和文件系统9
1.4.2 进程15
1.4.3 用户和组16
1.4.4 权限17
1.4.5 信号18
1.4.6 进程间通信19
1.4.7 头文件19
1.4.8 错误处理19
第2章 文件I/O23
2.1 打开文件24
2.1.1 系统调用open()24
2.1.2 新建文件的所有者27
2.1.3 新建文件的权限27
2.1.4 creat()函数30
2.1.5 返回值和错误码30
2.2 通过read()读文件31
2.2.1 返回值31
2.2.2 读入所有字节33
2.2.3 非阻塞读33
2.2.4 其他错误码34
2.2.5 read()调用的大小限制34
2.3 调用write()写35
2.3.1 部分写(Partial Write)36
2.3.2 Append(追加)模式36
2.3.3 非阻塞写37
2.3.4 其他错误码37
2.3.5 write()大小限制38
2.3.6 write()行为38
2.4 同步I/O39
2.4.1 fsync()和fdatasync()39
2.4.2 sync()41
2.4.3 O_SYNC标志位42
2.4.4 O_DSYNC和O_RSYNC42
2.5 直接I/O43
2.6 关闭文件43
2.7 用lseek()查找44
2.7.1 在文件末尾后查找46
2.7.2 错误码46
2.7.3 限制47
2.8 定位读写47
2.9 文件截短48
2.10 I/O多路复用49
2.10.1 select()50
2.10.2 poll()56
2.10.3 poll()和select()的区别60
2.11 内核内幕61
2.11.1 虚拟文件系统61
2.11.2 页缓存62
2.11.3 页回写63
2.12 结束语64
第3章 缓冲I/O65
3.1 用户缓冲I/O65
3.2 标准I/O68
3.3 打开文件69
3.4 通过文件描述符打开流70
3.5 关闭流71
3.6 从流中读数据71
3.6.1 每次读取一个字节71
3.6.2 每次读一行72
3.6.3 读二进制文件74
3.7 向流中写数据75
3.7.1 写入单个字符75
3.7.2 写入字符串76
3.7.3 写入二进制数据76
3.8 缓冲I/O示例程序77
3.9 定位流78
3.10 Flush(刷新输出)流80
3.11 错误和文件结束80
3.12 获取关联的文件描述符81
3.13 控制缓冲82
3.14 线程安全83
3.14.1 手动文件加锁84
3.14.2 对流操作解锁85
3.15 对标准I/O的批评86
3.16 结束语87
第4章 高级文件I/O88
4.1 分散/聚集I/O89
4.2 Event Poll94
4.2.1 创建新的epoll实例94
4.2.2 控制epoll95
4.2.3 等待epoll事件98
4.2.4 边缘触发事件和条件触发事件100
4.3 存储映射101
4.3.1 mmap()101
4.3.2 munmap()105
4.3.3 存储映射实例106
4.3.4 mmap()的优点107
4.3.5 mmap()的不足108
4.3.6 调整映射的大小108
4.3.7 改变映射区域的权限109
4.3.8 通过映射同步文件110
4.3.9 给出映射提示112
4.4 普通文件I/O提示114
4.4.1 系统调用posix_fadvise()114
4.4.2 readahead()系统调用115
4.4.3 “经济实用”的操作提示116
4.5 同步(Synchronized),同步(Synchronous)及异步(Asynchronous)操作117
4.6 I/O调度器和I/O性能118
4.6.1 磁盘寻址119
4.6.2 I/O调度器的功能120
4.6.3 改进读请求120
4.6.4 选择和配置你的I/O调度器123
4.6.5 优化I/O性能124
4.7 结束语130
第5章 进程管理131
5.1 程序、进程和线程131
5.2 进程ID132
5.2.1 分配进程ID132
5.2.2 进程体系133
5.2.3 pid_t133
5.2.4 获取进程ID和父进程ID133
5.3 运行新进程134
5.3.1 exec系统调用134
5.3.2 fork()系统调用138
5.4 终止进程141
5.4.1 终止进程的其他方式142
5.4.2 atexit()143
5.4.3 on_exit()144
5.4.4 SIGCHLD144
5.5 等待子进程终止144
5.5.1 等待特定进程147
5.5.2 等待子进程的其他方法149
5.5.3 BSD中的wait3()和wait4()151
5.5.4 创建并等待新进程152
5.5.5 僵尸进程155
5.6 用户和组155
5.6.1 改变实际用户/组ID和保留的用户/组ID156
5.6.2 改变有效的用户ID或组ID157
5.6.3 BSD改变用户ID和组ID的方式158
5.6.4 HP-UX中改变用户ID和组ID的方式158
5.6.5 操作用户ID/组ID的首选方法159
5.6.6 对保留的用户ID的支持159
5.6.7 获取用户ID和组ID159
5.7 会话(Session)和进程组160
5.7.1 与会话相关的系统调用161
5.7.2 与进程组相关的系统调用163
5.7.3 废弃的进程组函数164
5.8 守护进程164
5.9 结束语167
第6章 高级进程管理168
6.1 进程调度168
6.1.1 时间片169
6.1.2 I/O约束型进程和处理器约束型进程169
6.1.3 抢占式调度170
6.2 完全公平调度器171
6.3 让出处理器172
6.4 进程优先级173
6.4.1 nice()174
6.4.2 getpriority()和setpriority()175
6.4.3 I/O优先级176
6.5 处理器亲和力(Affinity)177
6.6 实时系统180
6.6.1 硬实时系统和软实时系统180
6.6.2 延迟、抖动和截止期限181
6.6.3 Linux的实时支持182
6.6.4 Linux调度策略和优先级182
6.6.5 设置调度参数186
6.6.6 sched_rr_get_interval()189
6.6.7 关于实时进程的注意事项190
6.6.8 确定性191
6.7 资源限制193
6.7.1 限制项194
6.7.2 获取和设置资源限制198
第7章 线程200
7.1 二进制程序、进程和线程200
7.2 多线程201
7.2.1 多线程代价203
7.2.2 其他选择203
7.3 线程模型203
7.3.1 用户级线程模型204
7.3.2 混合式线程模型204
7.3.3 协同程序205
7.4 线程模式205
7.4.1 每个连接对应一个线程206
7.4.2 事件驱动的线程模式206
7.5 并发性、并行性和竞争207
7.6 同步210
7.6.1 互斥211
7.6.2 死锁212
7.7 Pthreads214
7.7.1 Linux线程实现214
7.7.2 Pthread API215
7.7.3 链接Pthreads216
7.7.4 创建线程216
7.7.5 线程ID217
7.7.6 终止线程218
7.7.7 join(加入)线程和detach(分离)线程221
7.7.8 线程编码实例223
7.7.9 Pthread互斥224
7.8 进一步研究227
第8章 文件和目录管理228
8.1 文件及其元数据228
8.1.1 一组stat函数229
8.1.2 权限233
8.1.3 所有权234
8.1.4 扩展属性237
8.1.5 扩展属性操作239
8.2 目录245
8.2.1 获取当前工作目录246
8.2.2 创建目录251
8.2.3 删除目录252
8.2.4 读取目录内容253
8.3 链接256
8.3.1 硬链接256
8.3.2 符号链接258
8.3.3 解除链接259
8.4 拷贝和移动文件261
8.4.1 拷贝261
8.4.2 移动261
8.5 设备节点263
8.5.1 特殊设备节点264
8.5.2 随机数生成器264
8.6 带外通信(Out-of-Band Communication)265
8.7 监视文件事件266
8.7.1 初始化inotify267
8.7.2 监视268
8.7.3 inotify事件270
8.7.4 高级监视选项273
8.7.5 删除inotify监视273
8.7.6 获取事件队列大小274
8.7.7 销毁inotify实例274
第9章 内存管理276
9.1 进程地址空间276
9.1.1 页和页面调度276
9.1.2 内存区域278
9.2 动态内存分配279
9.2.1 数组分配281
9.2.2 调整已分配内存大小282
9.2.3 释放动态内存283
9.2.4 对齐285
9.3 数据段的管理289
9.4 匿名内存映射290
9.4.1 创建匿名内存映射291
9.4.2 映射到设备文件/dev/zero293
9.5 高级内存分配294
9.5.1 调试内存分配297
9.5.2 获取统计信息297
9.6 基于栈的分配298
9.6.1 把字符串复制到栈中300
9.6.2 变长数组301
9.7 选择合适的内存分配机制302
9.8 内存操作303
9.8.1 字节设置303
9.8.2 字节比较304
9.8.3 字节移动305
9.8.4 字节查找306
9.8.5 字节加密306
9.9 内存锁定307
9.9.1 锁定部分地址空间307
9.9.2 锁定全部地址空间308
9.9.3 内存解锁309
9.9.4 锁的限制310
9.9.5 该页在物理内存中吗310
9.10 投机性内存分配策略311
第10章 信号313
10.1 信号相关的概念313
10.1.1 信号标识符314
10.1.2 Linux支持的信号315
10.2 基本信号管理320
10.2.1 等待信号321
10.2.2 示例322
10.2.3 执行和继承324
10.2.4 把信号编号映射为字符串325
10.3 发送信号326
10.3.1 权限326
10.3.2 示例327
10.3.3 给进程本身发送信号327
10.3.4 给整个进程组发送信号327
10.4 重入328
10.5 信号集330
10.5.1 更多的信号集函数331
10.5.2 获取待处理信号332
10.5.3 等待信号集333
10.6 高级信号管理333
10.6.1 结构体siginfo_t336
10.6.2 si code的相关说明338
10.6.3 发送带附加信息(payload)的信号342
10.6.4 示例343
10.7 信号是个UNIX“瑕疵”吗343
第11章 时间345
11.1 时间的数据结构347
11.1.1 原始表示348
11.1.2 微秒级精度348
11.1.3 更精确的:纳秒级精度348
11.1.4 对时间进行分解349
11.1.5 进程时间类型350
11.2 POSIX时钟351
11.3 时间源精度351
11.4 取得当前时间353
11.4.1 更好的接口353
11.4.2 高级接口354
11.4.3 获取进程时间355
11.5 设置当前时间356
11.5.1 设置支持高精度的时间356
11.5.2 设置时间的高级接口357
11.6 玩转时间358
11.7 睡眠和等待363
11.7.1 以微秒级精度睡眠363
11.7.2 以纳秒级精度睡眠365
11.7.3 实现睡眠的高级方法366
11.7.4 sleep的可移植实现368
11.7.5 超时(Overrun)368
11.7.6 睡眠的其他方式369
11.8 定时器369
11.8.1 简单的闹钟369
11.8.2 计时器(interval timer)370
11.8.3 高级定时器372
附录A C语言的GCC扩展378
附录B 参考书目390
热门推荐
- 966856.html
- 2447865.html
- 3490313.html
- 1203296.html
- 15572.html
- 2304783.html
- 858141.html
- 1594937.html
- 123380.html
- 2849955.html
- http://www.ickdjs.cc/book_203359.html
- http://www.ickdjs.cc/book_3185353.html
- http://www.ickdjs.cc/book_1004619.html
- http://www.ickdjs.cc/book_3787768.html
- http://www.ickdjs.cc/book_3847009.html
- http://www.ickdjs.cc/book_1256243.html
- http://www.ickdjs.cc/book_263136.html
- http://www.ickdjs.cc/book_2793776.html
- http://www.ickdjs.cc/book_3312219.html
- http://www.ickdjs.cc/book_3606978.html