linux系统编程-中文版。pdf

所需积分/C币:50 2019-04-13 09:15:13 1.73MB PDF
9
收藏 收藏
举报

摆在你面前的是一本关于系统编程的书,你将在本书中学习到编写系统软件的相关技术和技巧。系统软件运行于系统的底层,与内核和系统核心库直接进行交互。常见的系统软件包括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

...展开详情
试读 127P linux系统编程-中文版。pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
上传资源赚积分or赚钱
    最新推荐
    linux系统编程-中文版。pdf 50积分/C币 立即下载
    1/127
    linux系统编程-中文版。pdf第1页
    linux系统编程-中文版。pdf第2页
    linux系统编程-中文版。pdf第3页
    linux系统编程-中文版。pdf第4页
    linux系统编程-中文版。pdf第5页
    linux系统编程-中文版。pdf第6页
    linux系统编程-中文版。pdf第7页
    linux系统编程-中文版。pdf第8页
    linux系统编程-中文版。pdf第9页
    linux系统编程-中文版。pdf第10页
    linux系统编程-中文版。pdf第11页
    linux系统编程-中文版。pdf第12页
    linux系统编程-中文版。pdf第13页
    linux系统编程-中文版。pdf第14页
    linux系统编程-中文版。pdf第15页
    linux系统编程-中文版。pdf第16页
    linux系统编程-中文版。pdf第17页
    linux系统编程-中文版。pdf第18页
    linux系统编程-中文版。pdf第19页
    linux系统编程-中文版。pdf第20页

    试读结束, 可继续阅读

    50积分/C币 立即下载 >