LinuxSystemProgramming(Linux系统编程中文版)
Linux System Programming (Linux系统编程中文版)第0章译者序译者序《 Linux Systcm Porgramming》(简称LSP)的中文翻译工作是浮图开放实验室和哈尔滨工业大学计算机学院IBM俱乐部《深入理解计算机系统》讨论班的练习项目。参与翻译工作的同学包括从本科二年级到研究生二年级的十位同学。他们是林晓鑫、王澍、崔玉春、吉飞飞、何春晓、熊飞、李志、张祖羽、张智、陈盛、张永辉。附录的翻译由SMS(@ilacbbs.com完成,参考文献部分的翻译由王澍完成。刘文懋、王耀、刘徳超、于墨、王新喜等同学参与了审校工作。全书的初稿审校由吴晋完成。本书基于哈尔滨工业人学硕士博士论文TX模板制作,全书的模板修正工作由李志完成。本书的翻译工作基丁LSP第版完成,并根据英文版勘误进行了修正。在本书内部审核版本发布后得到了原IRM俱乐鄣成员谢煜波(现供职于微软亚洲工程院)和戴晓光(现供职于SUN中国有限公司)的大力支持,他们利用宝贵的业余时间对部分章节进行了仔细的审校,并提出了大量细致的修改意见。他们的修改意见使所有参与翻译的同学受益良多。在此向他们表示感谢。在翻译过程中还得到了紫丁香社区和 Harbin Linux User Group网友的大力支持,在此向他们一并表示感谢。由于译者在系统编程方面并没有丰富的经验,整个翻译工作以学习为的,因此书中的错误和疏漏在所难免。如果书中存在任何问题,请川如下方式和我们联系wchsite:http:/www.footoo.orgTwitter:http:/twittcr.com/cliffwooEmail: cliffwoo(agnail. com或者 cliffwood(a, footoo orgGoogleGroups: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垂41.2.1API.42.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符号链接8889012214.6特殊文件14.7文件系统和名字空间垂音看面垂指1314.8进程1414.9线程1.4.10进程体系1.4.11用户和组14.12权限171.4.13信号1.4.14进程间通讯1.4.15头文件1914.16借误处理191.5开始系统编程,,,22目录第2章文件I/O232.1打开文件.2421. I opend系统调用,,,,,,,242.1.2新文件所有者26213新文件权限26214 creat函数282.1.5返回值和错误码2922用 reado读取文件2922.1返回值30222读入所有的字节31223非阻塞读.3222.4其他错误码22.5 reado大小限制323用 write来写.34231部分写352.32追加模式36233非阻塞写362.34其他错误码36235 write0人小限制.236 write的行为.鲁372.4同步IO.酯垂看鲁着垂2.4.1 fsyncO Fu fdatasynco824.2返回值和错误码392.4.3 syncO.40244 O SYNC标志..····:··:41245 O DSYNO和 O RSYNO412.5直接IO422.6关闭文件2.6.1错误码4327用 Seeks0查找.442.7.1文件末尾之后进行查找2.7.2错误码462.7.3限制.4628定位读写·鲁着;·428.1错误码4729截短文件.472.10I/O多路复用..492.10.1 selecto..502.10.2返回值和错误码2.10.3pol572.104polO)与 select(61目录2l内核内幕2.1.1虚拟文件系统622.1.2页缓存.·D垂香·,垂看垂垂2.113页回写2.12结论鲁D垂65第3章缓冲输入输出.663.1用户一缓冲IO∴,663.1.1块大小.673.1.2标准O683.1.3文件指针3.2打开文件,3.2.1模式.693.2.2通过文件描述符打丌文件3.3关闭流713.3.1关闭所有的流.7134从流中读取数据7134.1单字节读取71342把字符回放入流中343按行的读取344读取任意字符串7334.5读取二进制文件43.5向流中写数据35.1对齐的讨论,753.52写入单个字符.3.53写入字符串763.54写入二进制数据773.5.5缓冲IO示例程序着.·垂3.6定位流3.6.1获得当前流位置803.7清洗一个流..8138错误和文件结束823.9获得关联的文件描述符·······。;a·;·····;····,3.10控制缓冲833.1线程安全853.11.1手动文件加锁853.1.2不加锁流操作··..··.863.12对标准IO的批评873.13结论春看88ⅤII目录第4章高级文件I/O894.1散布/聚集IO.894.1.1 readv( Fll writevO....,......4.2 Event po接口9642.1创建一个新的epol实例42.2控制 epoll9742.3等待Epol事件,9942.4边沿触发事件和水平触发事件.10l4.3存储映射,1014.3.1 mmap·1024.3.2 unmap···:····:,,106433存储映射例子10643.4mmap(的优点43.5 mmap的缺陷10943.6调整映射的大小10943.7改变映射区域的权限11043.8使用映射机制同步文件.1114.39映射提示44晋通文件ⅠO提示.1144.4.1 posix fadviseo11444.2 readahead系统调用..,,11644.3“绎济实用“的操作提小.45同步( Synchronized),同步( Synchronous)及异步( Asynchronous)操作.11745.1异步1O46IO调度器和IO性能1204.6.1磁盘寻址,∴.,120462调度器的功能..121463改进读请求1224.6.4选择和配置你的IO调度器.12546.5优化IO性能254.7结论132第5章进程管理.·.垂;4·鲁南垂·非,,,,,,1335.1进程ID1335.1.1分配进程ID1345.12进程体系1341.3 pid5.1.4获得进程I和父进程的ⅠD1355.2运行新进程13652.1exec系列系统调用∴13652,2fork(系统调用139ⅤII目录53终止进程14353.1其他终止进程的方式.1445.3.2 atexit145on ex.14653. 4 SIGCHLD14654等待终止的了进程.14754.1等待特定进程.150542其他等待子进程的方法········.···:·152543BSD中的wait30和wait4()544创建并等待一个新进程54.5僵死进程.15855用户和组,,l585.51实际用户(组)D、有效用户(组)D和保存设置的用户(组)D159552改变实际用户(组)D和保存设置的用户(组)D..1605.53改变有效用户和组ID161554BSD改变用户ID和组ID的方式161555HPUⅩ中改变用户ID和组ID的方式1625.56操作用户ID组ID的首选方法..16355.7对保存设置的用户ID的攴持∴,,163558获取川户ID和组I.16356会话和进程组,16456.1与会话相关的系统调用16556.2与进程组相关的系统调用.1675.63废介的进程组喲数.,16857守护进程1695.8总结171第6章高级进程管理..1726.1进程调度1726.1.1大O记法..1736.1.2时间片1736.1.3IO约束进程Ⅴs.处理器约束进程1746.1.4抢占调度1756.1.5线程17562让出处理器7662.1合理使用∴,176622让出处理器方法的过去和现状,17763进程优先级.6.3.1nice(.,,1796.3.2 getpriorityO FA setpriorityO∴,180633IO优先级181IX目录6.4处理器亲和度6.4.1 schcd-gctaffinityO Nll sched sctaffinityO.18365实时系统.185651软硬实时系统.1866.52延时,抖动和截止期限,,,1866.53 Linux的实时支持1876.54Liux调度策略和优先级.1886.55设置调度参数1925.6 sched_rr-get_intervalo6.5.7于实时进程的一些提醒..1976.58确定性.,·,4垂.,1976.6资源限制2006.6.1限制列表,2016.6.2获取和设置资源限制.204第7章文件与目录管理2077.1文件及其元数据.2077.1.1组stat函数2077.1.2权限71.3所有权..2137.14扩展属性·······21572目录..,22372.1当前工作目录2247.22创建目录22972.3移除目录23072.4读取目录内容2317.3链接2357.3.1硬链接...2367.3.2符号链接2377.3.3解除链接23974复制和移动文件,2407.4.1复制.240742移动:··:···;··∴,,24l7.5设备节点.2427.5.1特殊设备节点.2437.52随机数生成器....2437.6带外通信.·24477监视文件事件2467.7.1初始化 inotify.247772监视.247
用户评论