Linux系统编程(第2版)

Linux系统编程(第2版)
8.3
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美]
出版社: 人民邮电出版社
2014-04
版次: 2
ISBN: 9787115346353
定价: 79.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 420页
字数: 450千字
正文语种: 简体中文
  •   系统编程是指编写系统软件,其代码在底层运行,直接跟内核和核心系统库对话。
      《Linux系统编程(第2版)》是一本关于Linux系统编程的教程,也是一本介绍Linux系统调用的手册,还是一本如何实现更优雅更快代码的内幕指南。《Linux系统编程(第2版)》分为11章和2个附录,详细介绍了Linux系统编程基本概念、文件I/O、缓冲I/O、高级文件I/O、进程管理、高级进程管理、线程、文件和目录管理、信号和时间等主题。附录给出了gcc和GNUC提供的很多语言扩展,以及推荐阅读的相关书目。   Robert Love在很早期就一直使用Linux并贡献代码,包括对Linux内核和GNOME桌面环境的贡献。Robert Love是Google软件工程师,是Android设计和开发团队成员。目前,他致力于Google的Web搜索架构。Robert获得了Florida大学的双学位:计算机科学理学学士和数学文学学士。 第1章入门和基本概念1.1系统编程1.1.1为什么要学习系统编程1.1.2系统编程的基础1.1.3系统调用1.1.4C库1.1.5C编译器1.2API和ABI1.2.1API1.2.2ABI1.3标准1.3.1POSIX和SUS的历史1.3.2C语言标准1.3.3Linux和标准1.3.4本书和标准1.4Linux编程的概念1.4.1文件和文件系统1.4.2进程1.4.3用户和组1.4.4权限1.4.5信号1.4.6进程间通信1.4.7头文件1.4.8错误处理第2章文件I/O2.1打开文件2.1.1系统调用open2.1.2新建文件的所有者2.1.3新建文件的权限2.1.4creat()函数2.1.5返回值和错误码2.2通过read()读文件2.2.1返回值2.2.2读入所有字节2.2.3非阻塞读2.2.4其他错误码2.2.5read()调用的大小限制2.3调用write()写2.3.1部分写(PartialWrite)2.3.2Append(追加)模式2.3.3非阻塞写2.3.4其他错误码2.3.5write()大小限制2.3.6write()行为2.4同步I/O2.4.1fsync()和fdatasync()2.4.2sync()2.4.3O_SYNC标志位2.4.4O_DSYNC和O_RSYNC2.5直接I/O2.6关闭文件2.7用lseek()查找2.7.1在文件末尾后查找2.7.2错误码2.7.3限制2.8定位读写2.9文件截短2.10I/O多路复用2.10.1select()2.10.2poll()2.10.3poll()和select()的区别2.11内核内幕2.11.1虚拟文件系统2.11.2页缓存2.11.3页回写2.12结束语第3章缓冲I/O3.1用户缓冲I/O3.2标准I/O3.3打开文件3.4通过文件描述符打开流3.5关闭流3.6从流中读数据3.6.1每次读取一个字节3.6.2每次读一行3.6.3读二进制文件3.7向流中写数据3.7.1写入单个字符3.7.2写入字符串3.7.3写入二进制数据3.8缓冲I/O示例程序3.9定位流3.10Flush(刷新输出)流3.11错误和文件结束3.12获取关联的文件描述符3.13控制缓冲3.14线程安全3.14.1手动文件加锁3.14.2对流操作解锁3.15对标准I/O的批评3.16结束语第4章高级文件I/O4.1分散/聚集I/O4.2EventPoll4.2.1创建新的epoll实例4.2.2控制epoll4.2.3等待epoll事件4.2.4边缘触发事件和条件触发事件4.3存储映射4.3.1mmap()4.3.2munmap()4.3.3存储映射实例4.3.4mmap()的优点4.3.5mmap()的不足4.3.6调整映射的大小4.3.7改变映射区域的权限4.3.8通过映射同步文件4.3.9给出映射提示4.4普通文件I/O提示4.4.1系统调用posix_fadvise()4.4.2readahead()系统调用4.4.3“经济实用”的操作提示4.5同步(Synchronized),同步(Synchronous)及异步(Asynchronous)操作4.6I/O调度器和I/O性能4.6.1磁盘寻址4.6.2I/O调度器的功能4.6.3改进读请求4.6.4选择和配置你的I/O调度器4.6.5优化I/O性能4.7结束语第5章进程管理5.1程序、进程和线程5.2进程ID5.2.1分配进程ID5.2.2进程体系5.2.3pid_t5.2.4获取进程ID和父进程ID5.3运行新进程5.3.1exec系统调用5.3.2fork()系统调用5.4终止进程5.4.1终止进程的其他方式5.4.2atexit()5.4.3on_exit()5.4.4SIGCHLD5.5等待子进程终止5.5.1等待特定进程5.5.2等待子进程的其他方法5.5.3BSD中的wait3()和wait4()5.5.4创建并等待新进程5.5.5僵尸进程5.6用户和组5.6.1改变实际用户/组ID和保留的用户/组ID5.6.2改变有效的用户ID或组ID5.6.3BSD改变用户ID和组ID的方式5.6.4HP-UX中改变用户ID和组ID的方式5.6.5操作用户ID/组ID的首选方法5.6.6对保留的用户ID的支持5.6.7获取用户ID和组ID5.7会话(Session)和进程组5.7.1与会话相关的系统调用5.7.2与进程组相关的系统调用5.7.3废弃的进程组函数5.8守护进程5.9结束语第6章高级进程管理6.1进程调度6.1.1时间片6.1.2I/O约束型进程和处理器约束型进程6.1.3抢占式调度6.2完全公平调度器6.3让出处理器6.4进程优先级6.4.1nice()6.4.2getpriority()和setpriority()6.4.3I/O优先级6.5处理器亲和力(Affinity)6.6实时系统6.6.1硬实时系统和软实时系统6.6.2延迟、抖动和截止期限6.6.3Linux的实时支持6.6.4Linux调度策略和优先级6.6.5设置调度参数6.6.6sched_rr_get_interval()6.6.7关于实时进程的注意事项6.6.8确定性6.7资源限制6.7.1限制项6.7.2获取和设置资源限制第7章线程7.1二进制程序、进程和线程7.2多线程7.2.1多线程代价7.2.2其他选择7.3线程模型7.3.1用户级线程模型7.3.2混合式线程模型7.3.3协同程序7.4线程模式7.4.1每个连接对应一个线程7.4.2事件驱动的线程模式7.5并发性、并行性和竞争7.6同步7.6.1互斥7.6.2死锁7.7Pthreads7.7.1Linux线程实现7.7.2PthreadAPI7.7.3链接Pthreads7.7.4创建线程7.7.5线程ID7.7.6终止线程7.7.7join(加入)线程和detach(分离)线程7.7.8线程编码实例7.7.9Pthread互斥7.8进一步研究第8章文件和目录管理8.1文件及其元数据8.1.1一组stat函数8.1.2权限8.1.3所有权8.1.4扩展属性8.1.5扩展属性操作8.2目录8.2.1获取当前工作目录8.2.2创建目录8.2.3删除目录8.2.4读取目录内容8.3链接8.3.1硬链接8.3.2符号链接8.3.3解除链接8.4拷贝和移动文件8.4.1拷贝8.4.2移动8.5设备节点8.5.1特殊设备节点8.5.2随机数生成器8.6带外通信(Out-of-BandCommunication)8.7监视文件事件8.7.1初始化inotify8.7.2监视8.7.3inotify事件8.7.4高级监视选项8.7.5删除inotify监视8.7.6获取事件队列大小8.7.7销毁inotify实例……第9章内存管理第10章信号第11章时间附录AC语言的GCC扩展附录B参考书目
  • 内容简介:
      系统编程是指编写系统软件,其代码在底层运行,直接跟内核和核心系统库对话。
      《Linux系统编程(第2版)》是一本关于Linux系统编程的教程,也是一本介绍Linux系统调用的手册,还是一本如何实现更优雅更快代码的内幕指南。《Linux系统编程(第2版)》分为11章和2个附录,详细介绍了Linux系统编程基本概念、文件I/O、缓冲I/O、高级文件I/O、进程管理、高级进程管理、线程、文件和目录管理、信号和时间等主题。附录给出了gcc和GNUC提供的很多语言扩展,以及推荐阅读的相关书目。
  • 作者简介:
      Robert Love在很早期就一直使用Linux并贡献代码,包括对Linux内核和GNOME桌面环境的贡献。Robert Love是Google软件工程师,是Android设计和开发团队成员。目前,他致力于Google的Web搜索架构。Robert获得了Florida大学的双学位:计算机科学理学学士和数学文学学士。
  • 目录:
    第1章入门和基本概念1.1系统编程1.1.1为什么要学习系统编程1.1.2系统编程的基础1.1.3系统调用1.1.4C库1.1.5C编译器1.2API和ABI1.2.1API1.2.2ABI1.3标准1.3.1POSIX和SUS的历史1.3.2C语言标准1.3.3Linux和标准1.3.4本书和标准1.4Linux编程的概念1.4.1文件和文件系统1.4.2进程1.4.3用户和组1.4.4权限1.4.5信号1.4.6进程间通信1.4.7头文件1.4.8错误处理第2章文件I/O2.1打开文件2.1.1系统调用open2.1.2新建文件的所有者2.1.3新建文件的权限2.1.4creat()函数2.1.5返回值和错误码2.2通过read()读文件2.2.1返回值2.2.2读入所有字节2.2.3非阻塞读2.2.4其他错误码2.2.5read()调用的大小限制2.3调用write()写2.3.1部分写(PartialWrite)2.3.2Append(追加)模式2.3.3非阻塞写2.3.4其他错误码2.3.5write()大小限制2.3.6write()行为2.4同步I/O2.4.1fsync()和fdatasync()2.4.2sync()2.4.3O_SYNC标志位2.4.4O_DSYNC和O_RSYNC2.5直接I/O2.6关闭文件2.7用lseek()查找2.7.1在文件末尾后查找2.7.2错误码2.7.3限制2.8定位读写2.9文件截短2.10I/O多路复用2.10.1select()2.10.2poll()2.10.3poll()和select()的区别2.11内核内幕2.11.1虚拟文件系统2.11.2页缓存2.11.3页回写2.12结束语第3章缓冲I/O3.1用户缓冲I/O3.2标准I/O3.3打开文件3.4通过文件描述符打开流3.5关闭流3.6从流中读数据3.6.1每次读取一个字节3.6.2每次读一行3.6.3读二进制文件3.7向流中写数据3.7.1写入单个字符3.7.2写入字符串3.7.3写入二进制数据3.8缓冲I/O示例程序3.9定位流3.10Flush(刷新输出)流3.11错误和文件结束3.12获取关联的文件描述符3.13控制缓冲3.14线程安全3.14.1手动文件加锁3.14.2对流操作解锁3.15对标准I/O的批评3.16结束语第4章高级文件I/O4.1分散/聚集I/O4.2EventPoll4.2.1创建新的epoll实例4.2.2控制epoll4.2.3等待epoll事件4.2.4边缘触发事件和条件触发事件4.3存储映射4.3.1mmap()4.3.2munmap()4.3.3存储映射实例4.3.4mmap()的优点4.3.5mmap()的不足4.3.6调整映射的大小4.3.7改变映射区域的权限4.3.8通过映射同步文件4.3.9给出映射提示4.4普通文件I/O提示4.4.1系统调用posix_fadvise()4.4.2readahead()系统调用4.4.3“经济实用”的操作提示4.5同步(Synchronized),同步(Synchronous)及异步(Asynchronous)操作4.6I/O调度器和I/O性能4.6.1磁盘寻址4.6.2I/O调度器的功能4.6.3改进读请求4.6.4选择和配置你的I/O调度器4.6.5优化I/O性能4.7结束语第5章进程管理5.1程序、进程和线程5.2进程ID5.2.1分配进程ID5.2.2进程体系5.2.3pid_t5.2.4获取进程ID和父进程ID5.3运行新进程5.3.1exec系统调用5.3.2fork()系统调用5.4终止进程5.4.1终止进程的其他方式5.4.2atexit()5.4.3on_exit()5.4.4SIGCHLD5.5等待子进程终止5.5.1等待特定进程5.5.2等待子进程的其他方法5.5.3BSD中的wait3()和wait4()5.5.4创建并等待新进程5.5.5僵尸进程5.6用户和组5.6.1改变实际用户/组ID和保留的用户/组ID5.6.2改变有效的用户ID或组ID5.6.3BSD改变用户ID和组ID的方式5.6.4HP-UX中改变用户ID和组ID的方式5.6.5操作用户ID/组ID的首选方法5.6.6对保留的用户ID的支持5.6.7获取用户ID和组ID5.7会话(Session)和进程组5.7.1与会话相关的系统调用5.7.2与进程组相关的系统调用5.7.3废弃的进程组函数5.8守护进程5.9结束语第6章高级进程管理6.1进程调度6.1.1时间片6.1.2I/O约束型进程和处理器约束型进程6.1.3抢占式调度6.2完全公平调度器6.3让出处理器6.4进程优先级6.4.1nice()6.4.2getpriority()和setpriority()6.4.3I/O优先级6.5处理器亲和力(Affinity)6.6实时系统6.6.1硬实时系统和软实时系统6.6.2延迟、抖动和截止期限6.6.3Linux的实时支持6.6.4Linux调度策略和优先级6.6.5设置调度参数6.6.6sched_rr_get_interval()6.6.7关于实时进程的注意事项6.6.8确定性6.7资源限制6.7.1限制项6.7.2获取和设置资源限制第7章线程7.1二进制程序、进程和线程7.2多线程7.2.1多线程代价7.2.2其他选择7.3线程模型7.3.1用户级线程模型7.3.2混合式线程模型7.3.3协同程序7.4线程模式7.4.1每个连接对应一个线程7.4.2事件驱动的线程模式7.5并发性、并行性和竞争7.6同步7.6.1互斥7.6.2死锁7.7Pthreads7.7.1Linux线程实现7.7.2PthreadAPI7.7.3链接Pthreads7.7.4创建线程7.7.5线程ID7.7.6终止线程7.7.7join(加入)线程和detach(分离)线程7.7.8线程编码实例7.7.9Pthread互斥7.8进一步研究第8章文件和目录管理8.1文件及其元数据8.1.1一组stat函数8.1.2权限8.1.3所有权8.1.4扩展属性8.1.5扩展属性操作8.2目录8.2.1获取当前工作目录8.2.2创建目录8.2.3删除目录8.2.4读取目录内容8.3链接8.3.1硬链接8.3.2符号链接8.3.3解除链接8.4拷贝和移动文件8.4.1拷贝8.4.2移动8.5设备节点8.5.1特殊设备节点8.5.2随机数生成器8.6带外通信(Out-of-BandCommunication)8.7监视文件事件8.7.1初始化inotify8.7.2监视8.7.3inotify事件8.7.4高级监视选项8.7.5删除inotify监视8.7.6获取事件队列大小8.7.7销毁inotify实例……第9章内存管理第10章信号第11章时间附录AC语言的GCC扩展附录B参考书目
查看详情
好书推荐 / 更多
Linux系统编程(第2版)
译林幻系列:呼吸
[美国]特德·姜 著;耿辉 译
Linux系统编程(第2版)
山村暮鸟集:云
山村暮鸟 著
Linux系统编程(第2版)
剪辑之道:对话沃尔特·默奇
[加拿大]迈克尔·翁达杰(Michael Ondaatije) 著;夏彤 译
Linux系统编程(第2版)
教父电影全剧本(全彩插图评注版):马里奥·普佐与弗朗西斯·科波拉终稿
[美]珍妮·M·琼斯 著;高远致 译
Linux系统编程(第2版)
萨拉戈萨手稿
[波]扬·波托茨基 著;方颂华 译
Linux系统编程(第2版)
新民说·谁的历史
鲁西奇 著
Linux系统编程(第2版)
古欢:黄易与乾嘉金石时尚
薛龙春
Linux系统编程(第2版)
春之海终日悠哉游哉:与谢芜村俳句300
[日]与谢芜村 著
Linux系统编程(第2版)
我们能谈点开心的事吗(99图像小说)
[美]罗兹·查斯特 著
Linux系统编程(第2版)
狂想人生:皇后乐队传
[英]马克·布莱克 著;席虎牙 译
Linux系统编程(第2版)
思想的力量
[美]布鲁克·诺埃尔·穆尔;[美]肯尼思·布鲁德
Linux系统编程(第2版)
中唐至北宋的典范选择与诗歌因革
李贵 著;王水照 编