linux系统编程-中文版。pdf


-
摆在你面前的是一本关于系统编程的书,你将在本书中学习到编写系统软件的相关技术和技巧。系统软件运行于系统的底层,与内核和系统核心库直接进行交互。常见的系统软件包括shell、文本编辑器、编译器、调试器、核心工具和系统守护进程等。
第0章译者序 译者序 《 Linux Systcm Porgramming》(简称LSP)的中文翻译工作是浮图开放实验 室和哈尔滨工业大学计算机学院IBM俱乐部《深入理解计算机系统》讨论班 的练习项目。参与翻译工作的同学包括从本科二年级到研究生二年级的十 位同学。他们是林晓鑫、王澍、崔玉春、吉飞飞、何春晓、熊飞、李志、张祖 羽、张智、陈盛、张永辉。附录的翻译由SMS(@ilacbbs.com完成,参考文献部 分的翻译由王澍完成。刘文懋、王耀、刘徳超、于墨、王新喜等同学参与了审 校工作。全书的初稿审校由吴晋完成。本书基于哈尔滨工业人学硕士博士论文 TX模板制作,全书的模板修正工作由李志完成。 本书的翻译工作基丁LSP第版完成,并根据英文版勘误进行了修正。 在本书内部审核版本发布后得到了原IRM俱乐鄣成员谢煜波(现供职于微 软亚洲工程院)和戴晓光(现供职于SUN中国有限公司)的大力支持,他们利用 宝贵的业余时间对部分章节进行了仔细的审校,并提出了大量细致的修改意 见。他们的修改意见使所有参与翻译的同学受益良多。在此向他们表示感谢。 在翻译过程中还得到了紫丁香社区和 Harbin Linux User Group网友的大力支 持,在此向他们一并表示感谢。 由于译者在系统编程方面并没有丰富的经验,整个翻译工作以学习为 的,因此书中的错误和疏漏在所难免。如果书中存在任何问题,请川如下方式 和我们联系 wchsite:http:/www.footoo.org Twitter:http:/twittcr.com/cliffwoo Email: cliffwoo(agnail. com或者 cliffwood(a, footoo org GoogleGroups:http://groups.googlecom/group/ispcn/ 吴晋于哈尔滨工业大学 209年4月30日 第0章版权声明 版权声明 《 Linux System Programming》中文版的翻译工作为哈尔滨工业大学计算机 学院IBM俱乐部的练习项目。译文仅供系统编程的学习和交流使用,严禁用于商 业用途。 《 Linux System Programming》的版权归作者及原出版社所有,译文仅供系 统编程的学习和交流使用。未经原书作者及出版社允许的出版、发行、制作所 引发的纠纷,由当事人负责,特此声明。 -I一 目录 目录 译者序 音看垂·D音垂·看垂垂 版权声明 第1章简介和主要概念 ······;··.:·····::····· 1.1系统编程. 1.1.1系统调用 1.2调用系统调用 3C库 1.1.4C编译器 12API和ABⅠI ·垂·4垂 4 1.2.1API. 4 2.2ABI.,,, 1.3标准 .3.1POSX和SUS的历史 1.3.2C语言标准. 33 Linux和标准 134本书和标准 1.4 Linux编程概念 1.4.1文件和文件系统 1.4.2普通文件 14.3日录和链接 1.44硬链接 14.5符号链接 88890122 14.6特殊文件 14.7文件系统和名字空间 垂音看面垂指 13 14.8进程 14 14.9线程 1.4.10进程体系 1.4.11用户和组 14.12权限 17 1.4.13信号 1.4.14进程间通讯 1.4.15头文件 19 14.16借误处理 19 1.5开始系统编程 ,,,22 目录 第2章文件I/O 23 2.1打开文件. 24 21. I opend系统调用 ,,,,,,,24 2.1.2新文件所有者 26 213新文件权限 26 214 creat函数 28 2.1.5返回值和错误码 29 22用 reado读取文件 29 22.1返回值 30 222读入所有的字节 31 223非阻塞读. 32 22.4其他错误码 22.5 reado大小限制 3 23用 write来写. 34 231部分写 35 2.32追加模式 36 233非阻塞写 36 2.34其他错误码 36 235 write0人小限制. 236 write的行为. 鲁 37 2.4同步IO. 酯垂看鲁着垂 2.4.1 fsyncO Fu fdatasynco 8 24.2返回值和错误码 39 2.4.3 syncO .40 244 O SYNC标志 ..····:··: 41 245 O DSYNO和 O RSYNO 41 2.5直接IO 42 2.6关闭文件 2.6.1错误码 43 27用 Seeks0查找. 44 2.7.1文件末尾之后进行查找 2.7.2错误码 46 2.7.3限制. 46 28定位读写 ·鲁着;· 4 28.1错误码 47 29截短文件. 47 2.10I/O多路复用.. 49 2.10.1 selecto ..50 2.10.2返回值和错误码 2.10.3pol 57 2.104pol O)与 select( 61 目录 2l内核内幕 2.1.1虚拟文件系统 62 2.1.2页缓存. ·D垂香·,垂看垂垂 2.113页回写 2.12结论 鲁D垂 65 第3章缓冲输入输出. 66 3.1用户一缓冲IO ∴,66 3.1.1块大小 .67 3.1.2标准O 68 3.1.3文件指针 3.2打开文件, 3.2.1模式 .69 3.2.2通过文件描述符打丌文件 3.3关闭流 71 3.3.1关闭所有的流. 71 34从流中读取数据 71 34.1单字节读取 71 342把字符回放入流中 343按行的读取 344读取任意字符串 73 34.5读取二进制文件 4 3.5向流中写数据 35.1对齐的讨论 ,75 3.52写入单个字符. 3.53写入字符串 76 3.54写入二进制数据 77 3.5.5缓冲IO示例程序 着.·垂 3.6定位流 3.6.1获得当前流位置 80 3.7清洗一个流. .81 38错误和文件结束 82 3.9获得关联的文件描述符 ·······。;a·;·····;····, 3.10控制缓冲 83 3.1线程安全 85 3.11.1手动文件加锁 85 3.1.2不加锁流操作 ··..·· .86 3.12对标准IO的批评 87 3.13结论 春看 88 ⅤII 目录 第4章高级文件I/O 89 4.1散布/聚集IO .89 4.1.1 readv( Fll writevO....,...... 4.2 Event po接口 96 42.1创建一个新的epol实例 42.2控制 epoll 97 42.3等待Epol事件 ,99 42.4边沿触发事件和水平触发事件 .10l 4.3存储映射 ,101 4.3.1 mmap · 102 4.3.2 unmap ···:····: ,,106 433存储映射例子 106 43.4mmap(的优点 43.5 mmap的缺陷 109 43.6调整映射的大小 109 43.7改变映射区域的权限 110 43.8使用映射机制同步文件. 111 4.39映射提示 44晋通文件ⅠO提示 .114 4.4.1 posix fadviseo 114 44.2 readahead系统调用.. ,,116 44.3“绎济实用“的操作提小. 45同步( Synchronized),同步( Synchronous)及异步( Asynchronous)操作.117 45.1异步1O 46IO调度器和IO性能 120 4.6.1磁盘寻址, ∴.,120 462调度器的功能 ..121 463改进读请求 122 4.6.4选择和配置你的IO调度器 .125 46.5优化IO性能 25 4.7结论 132 第5章进程管理. ·.垂;4·鲁南垂·非 ,,,,,,133 5.1进程ID 133 5.1.1分配进程ID 134 5.12进程体系 134 1.3 pid 5.1.4获得进程I和父进程的ⅠD 135 5.2运行新进程 136 52.1exec系列系统调用 ∴136 52,2fork(系统调用 139 ⅤII 目录 53终止进程 143 53.1其他终止进程的方式 .144 5.3.2 atexit 145 on ex .146 53. 4 SIGCHLD 146 54等待终止的了进程. 147 54.1等待特定进程. 150 542其他等待子进程的方法 ········.···:· 152 543BSD中的wait30和wait4() 544创建并等待一个新进程 54.5僵死进程 .158 55用户和组 ,,l58 5.51实际用户(组)D、有效用户(组)D和保存设置的用户(组)D 159 552改变实际用户(组)D和保存设置的用户(组)D ..160 5.53改变有效用户和组ID 161 554BSD改变用户ID和组ID的方式 161 555HPUⅩ中改变用户ID和组ID的方式 162 5.56操作用户ID组ID的首选方法 ..163 55.7对保存设置的用户ID的攴持 ∴,,163 558获取川户ID和组I .163 56会话和进程组 ,164 56.1与会话相关的系统调用 165 56.2与进程组相关的系统调用. 167 5.63废介的进程组喲数 .,168 57守护进程 169 5.8总结 171 第6章高级进程管理. .172 6.1进程调度 172 6.1.1大O记法 ..173 6.1.2时间片 173 6.1.3IO约束进程Ⅴs.处理器约束进程 174 6.1.4抢占调度 175 6.1.5线程 175 62让出处理器 76 62.1合理使用 ∴,176 622让出处理器方法的过去和现状 ,177 63进程优先级. 6.3.1nice(. ,,179 6.3.2 getpriorityO FA setpriorityO ∴,180 633IO优先级 181 IX 目录 6.4处理器亲和度 6.4.1 schcd-gctaffinityO Nll sched sctaffinityO .183 65实时系统. 185 651软硬实时系统. 186 6.52延时,抖动和截止期限 ,,,186 6.53 Linux的实时支持 187 6.54Liux调度策略和优先级. 188 6.55设置调度参数 192 5.6 sched_rr-get_intervalo 6.5.7于实时进程的一些提醒 ..197 6.58确定性. ,·,4垂 .,197 6.6资源限制 200 6.6.1限制列表 ,201 6.6.2获取和设置资源限制 .204 第7章文件与目录管理 207 7.1文件及其元数据. 207 7.1.1组stat函数 207 7.1.2权限 71.3所有权. .213 7.14扩展属性 ······· 215 72目录. .,223 72.1当前工作目录 224 7.22创建目录 229 72.3移除目录 230 72.4读取目录内容 231 7.3链接 235 7.3.1硬链接 ...236 7.3.2符号链接 237 7.3.3解除链接 239 74复制和移动文件, 240 7.4.1复制. 240 742移动 :··:···;·· ∴,,24l 7.5设备节点 .242 7.5.1特殊设备节点 .243 7.52随机数生成器 ....243 7.6带外通信 .· 244 77监视文件事件 246 7.7.1初始化 inotify. 247 772监视. 247

2.7MB
linux系统编程(中文版)
2013-04-10linux系统编程(中文版) 1.简介和主要概念 2.文件I/O 3.缓冲输入输出 4.高级文件I/O 5.进程管理 6.高级进程管理 7.文件与目录管理 8.内存管理 9.信号 10.时间
Linux系统编程:入门篇视频教程
2018-10-16Linux系统编程视频课程为《Linux系统编程》入门篇,主要针对零基础的Linux开发学员科普Linux系统编程的概念以及需要掌握的各种技能,掌握Linux命令编写、Linux学习路线并熟悉嵌入式设备编程的方法。为后续的Linux系统编程深入学习打下良好的基础。
3.24MB
linux网络编程 清晰版pdf文件 十分好用
2010-01-12第一章 概论 .............................................................................................
Linux系统编程+中文高清版.pdf下载_course
2021-01-08从这本书的名字就能看出来,这本书所讲的内容是“系统编程”,所以,这里涉及的内容是系统调用,是我们的用户进程需要内核的帮助完成我们想要实现的功能,这本书我也是从头看到尾,由于书并不是很厚,所以没有花太久
2.5MB
linux系统编程+中文版.pdf
2010-07-15Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,
Linux系统编程中文版.pdf下载_course
2019-03-05Linux系统编程中文版.pdf 相关下载链接://download.csdn.net/download/qq1186447528/7294869?utm_source=bbsseo
40.57MB
Linux系统编程教程
2018-01-19Linux 作为一个庞大的体系,有很多相关的研究领域,总结起来大致有五个方向: 一、服务器维护:需要了解Linux 服务,熟练使用Shell,了解网络配置。 二、服务器开发:需要学习Linux 程序设
4.88MB
Linux C 编程.pdf
2016-06-17Linux C 编程.pdf 文字版
1.77MB
Linux系统编程中文版.pdf
2014-05-05Linux系统编程中文版.pdf
-
学院
WEB安全渗透测试1-Msql基础
WEB安全渗透测试1-Msql基础
-
学院
PHP支付宝微信支付配置教程
PHP支付宝微信支付配置教程
-
博客
Netty专题-(3)NIO网络编程
Netty专题-(3)NIO网络编程
-
学院
基于Django的电子商务网站设计---第三章 URL
基于Django的电子商务网站设计---第三章 URL
-
学院
python框架django网站文件上传知识点(新手入门)
python框架django网站文件上传知识点(新手入门)
-
学院
深度强化学习与GAN课程:深度学习中的高级主题
深度强化学习与GAN课程:深度学习中的高级主题
-
博客
小书匠使用笔记
小书匠使用笔记
-
学院
rabbitmq-stomp服务端推送技术
rabbitmq-stomp服务端推送技术
-
学院
UnitySocket异步聊天室
UnitySocket异步聊天室
-
学院
WPF上位机数据采集与监控系统零基础实战
WPF上位机数据采集与监控系统零基础实战
-
博客
高压均质机的原理及组成
高压均质机的原理及组成
-
博客
nodejs redis 订阅/发布消息
nodejs redis 订阅/发布消息
-
学院
多线程与线程池技术详解(图书配套)
多线程与线程池技术详解(图书配套)
-
博客
devops运维手册
devops运维手册
-
博客
ace 基础使用
ace 基础使用
-
下载
统一:统一ID-您的数据身份-源码
统一:统一ID-您的数据身份-源码
-
学院
算法导论二(排序和顺序统计量)——编程大牛的必经之路
算法导论二(排序和顺序统计量)——编程大牛的必经之路
-
下载
openglobus:JavaScript 3d地图和地理空间数据可视化引擎库-源码
openglobus:JavaScript 3d地图和地理空间数据可视化引擎库-源码
-
下载
图克波尔图-源码
图克波尔图-源码
-
下载
kt-telegram-bot:Kotlin语言的电报Bot库-源码
kt-telegram-bot:Kotlin语言的电报Bot库-源码
-
下载
gpg4win-3.1.15.zip
gpg4win-3.1.15.zip
-
博客
算法十三:罗马数字转整数
算法十三:罗马数字转整数
-
博客
Unity 工具类——身份证验证
Unity 工具类——身份证验证
-
学院
微信支付V3版微信小程序支付JAVA版
微信支付V3版微信小程序支付JAVA版
-
博客
0040-pytorch入门-猫狗二分类检测模型
0040-pytorch入门-猫狗二分类检测模型
-
下载
cuinj64_102.dll
cuinj64_102.dll
-
下载
共识j:JVM和Android的加密货币组件(JSON客户端和服务器支持,服务,DSL,CLI)-源码
共识j:JVM和Android的加密货币组件(JSON客户端和服务器支持,服务,DSL,CLI)-源码
-
博客
CISSP考试指南笔记:4.4 传输介质
CISSP考试指南笔记:4.4 传输介质
-
学院
转行做IT-第6章 IDEA、方法
转行做IT-第6章 IDEA、方法
-
博客
MySQL主从同步故障:Slave_SQL_Running:No 两种解决办法
MySQL主从同步故障:Slave_SQL_Running:No 两种解决办法