您好,欢迎来到聚文网。
登录
免费注册
网站首页
|
搜索
热搜:
磁力片
|
漫画
|
购物车
0
我的订单
商品分类
首页
幼儿
文学
社科
教辅
生活
销量榜
Linux系统编程(第2版)
字数: 490000
装帧: 平装
出版社: 人民邮电出版社
作者: [美]Robert Love 著
出版日期: 2022-03-01
商品条码: 9787115346353
版次: 1
开本: 16开
页数: 394
出版年份: 2022
定价:
¥99.8
销售价:
登录后查看价格
¥{{selectedSku?.salePrice}}
库存:
{{selectedSku?.stock}}
库存充足
{{item.title}}:
{{its.name}}
加入购物车
立即购买
加入书单
收藏
精选
¥5.83
世界图书名著昆虫记绿野仙踪木偶奇遇记儿童书籍彩图注音版
¥5.39
正版世界名著文学小说名家名译中学生课外阅读书籍图书批发 70册
¥8.58
简笔画10000例加厚版2-6岁幼儿童涂色本涂鸦本绘画本填色书正版
¥5.83
世界文学名著全49册中小学生青少年课外书籍文学小说批发正版
¥4.95
全优冲刺100分测试卷一二三四五六年级上下册语文数学英语模拟卷
¥8.69
父与子彩图注音完整版小学生图书批发儿童课外阅读书籍正版1册
¥24.2
好玩的洞洞拉拉书0-3岁宝宝早教益智游戏书机关立体翻翻书4册
¥7.15
幼儿认字识字大王3000字幼儿园中班大班学前班宝宝早教启蒙书
¥11.55
用思维导图读懂儿童心理学培养情绪管理与性格培养故事指导书
¥19.8
少年读漫画鬼谷子全6册在漫画中学国学小学生课外阅读书籍正版
¥64
科学真好玩
¥12.7
一年级下4册·读读童谣和儿歌
¥38.4
原生态新生代(传统木版年画的当代传承国际研讨会论文集)
¥11.14
法国经典中篇小说
¥11.32
上海的狐步舞--穆时英(中国现代文学馆馆藏初版本经典)
¥21.56
猫的摇篮(精)
¥30.72
幼儿园特色课程实施方案/幼儿园生命成长启蒙教育课程丛书
¥24.94
旧时风物(精)
¥12.04
三希堂三帖/墨林珍赏
¥6.88
寒山子庞居士诗帖/墨林珍赏
¥6.88
苕溪帖/墨林珍赏
¥6.88
楷书王维诗卷/墨林珍赏
¥9.46
兰亭序/墨林珍赏
¥7.74
祭侄文稿/墨林珍赏
¥7.74
蜀素帖/墨林珍赏
¥12.04
真草千字文/墨林珍赏
¥114.4
进宴仪轨(精)/中国古代舞乐域外图书
¥24.94
舞蹈音乐的基础理论与应用
编辑推荐
Linux系统编程用心之作,根据Linux内核3.0更新 Linux程序设计方面的传奇人物Robert Love力作
内容简介
系统编程是指编写系统软件,其代码在底层运行,直接跟内核和核心系统库对话。 《Linux系统编程(第 2版)》是一本关于Linux系统编程的教程,也是一本介绍Linux系统编程的手册,还是一本如何实现更优雅更快代码的内幕指南。全书分为11章和2个附录,详细介绍了Linux系统编程基本概念、文件I/O、缓冲I/O、高 级文件I/O、进程管理、高 级进程管理、线程、文件和目录管理、信号和时间等主题。附录给出了gcc和GNU C提供的很多语言扩展,以及推荐阅读的相关书目。 《Linux系统编程(第 2版)》的作者是Linux内核专业人士,多本技术图书的作者。《Linux系统编程(第 2版)》需要在C编程和Linux编程环境下工作的程序员阅读,对于想要巩固基础或了解内核的高 级编程人员,《Linux系统编程(第 2版)》也很有参考价值。
作者简介
Robert Love在很早期就一直使用Linux并贡献代码,包括对Linux内核和GNOME桌面环境的贡献。Robert Love是Google软件工程师,是Android设计和开发团队成员。目前,他致力于Google的Web搜索架构。Robert获得了Florida大学的双学位:计算机科学理学学士和数学文学学士。
目录
目 录 第 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和ABI 4 1.2.1 API 5 1.2.2 ABI 5 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/O 23 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/O 39 2.4.1 fsync()和fdatasync() 39 2.4.2 sync() 41 2.4.3 O_SYNC标志位 42 2.4.4 O_DSYNC和O_RSYNC 42 2.5 直接I/O 43 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/O 65 3.1 用户缓冲I/O 65 3.2 标准I/O 68 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/O 88 4.1 分散/聚集I/O 89 4.2 Event Poll 94 4.2.1 创建新的epoll实例 94 4.2.2 控制epoll 95 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 进程ID 132 5.2.1 分配进程ID 132 5.2.2 进程体系 133 5.2.3 pid_t 133 5.2.4 获取进程ID和父进程ID 133 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 SIGCHLD 144 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和保留的用户/组ID 156 5.6.2 改变有效的用户ID或组ID 157 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和组ID 159 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 Pthreads 214 7.7.1 Linux线程实现 214 7.7.2 Pthread API 215 7.7.3 链接Pthreads 216 7.7.4 创建线程 216 7.7.5 线程ID 217 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 初始化inotify 267 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/zero 293 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_t 336 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
×
Close
添加到书单
加载中...
点此新建书单
×
Close
新建书单
标题:
简介:
蜀ICP备2024047804号
Copyright 版权所有 © jvwen.com 聚文网