Linux系统编程(第2版)

Linux系统编程(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] , , ,
2014-04
版次: 2
ISBN: 9787115346353
定价: 79.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 420页
字数: 450千字
正文语种: 简体中文
163人买过
  •   系统编程是指编写系统软件,其代码在底层运行,直接跟内核和核心系统库对话。
      《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和ABI
    1.2.1API
    1.2.2ABI
    1.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/O
    2.1打开文件
    2.1.1系统调用open
    2.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/O
    2.4.1fsync()和fdatasync()
    2.4.2sync()
    2.4.3O_SYNC标志位
    2.4.4O_DSYNC和O_RSYNC
    2.5直接I/O
    2.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/O
    3.1用户缓冲I/O
    3.2标准I/O
    3.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/O
    4.1分散/聚集I/O
    4.2EventPoll
    4.2.1创建新的epoll实例
    4.2.2控制epoll
    4.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进程ID
    5.2.1分配进程ID
    5.2.2进程体系
    5.2.3pid_t
    5.2.4获取进程ID和父进程ID
    5.3运行新进程
    5.3.1exec系统调用
    5.3.2fork()系统调用
    5.4终止进程
    5.4.1终止进程的其他方式
    5.4.2atexit()
    5.4.3on_exit()
    5.4.4SIGCHLD
    5.5等待子进程终止
    5.5.1等待特定进程
    5.5.2等待子进程的其他方法
    5.5.3BSD中的wait3()和wait4()
    5.5.4创建并等待新进程
    5.5.5僵尸进程
    5.6用户和组
    5.6.1改变实际用户/组ID和保留的用户/组ID
    5.6.2改变有效的用户ID或组ID
    5.6.3BSD改变用户ID和组ID的方式
    5.6.4HP-UX中改变用户ID和组ID的方式
    5.6.5操作用户ID/组ID的首选方法
    5.6.6对保留的用户ID的支持
    5.6.7获取用户ID和组ID
    5.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.7Pthreads
    7.7.1Linux线程实现
    7.7.2PthreadAPI
    7.7.3链接Pthreads
    7.7.4创建线程
    7.7.5线程ID
    7.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初始化inotify
    8.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和ABI
    1.2.1API
    1.2.2ABI
    1.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/O
    2.1打开文件
    2.1.1系统调用open
    2.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/O
    2.4.1fsync()和fdatasync()
    2.4.2sync()
    2.4.3O_SYNC标志位
    2.4.4O_DSYNC和O_RSYNC
    2.5直接I/O
    2.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/O
    3.1用户缓冲I/O
    3.2标准I/O
    3.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/O
    4.1分散/聚集I/O
    4.2EventPoll
    4.2.1创建新的epoll实例
    4.2.2控制epoll
    4.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进程ID
    5.2.1分配进程ID
    5.2.2进程体系
    5.2.3pid_t
    5.2.4获取进程ID和父进程ID
    5.3运行新进程
    5.3.1exec系统调用
    5.3.2fork()系统调用
    5.4终止进程
    5.4.1终止进程的其他方式
    5.4.2atexit()
    5.4.3on_exit()
    5.4.4SIGCHLD
    5.5等待子进程终止
    5.5.1等待特定进程
    5.5.2等待子进程的其他方法
    5.5.3BSD中的wait3()和wait4()
    5.5.4创建并等待新进程
    5.5.5僵尸进程
    5.6用户和组
    5.6.1改变实际用户/组ID和保留的用户/组ID
    5.6.2改变有效的用户ID或组ID
    5.6.3BSD改变用户ID和组ID的方式
    5.6.4HP-UX中改变用户ID和组ID的方式
    5.6.5操作用户ID/组ID的首选方法
    5.6.6对保留的用户ID的支持
    5.6.7获取用户ID和组ID
    5.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.7Pthreads
    7.7.1Linux线程实现
    7.7.2PthreadAPI
    7.7.3链接Pthreads
    7.7.4创建线程
    7.7.5线程ID
    7.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初始化inotify
    8.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版)
LiteOS轻量级物联网操作系统实战 微课视频版
魏杰
Linux系统编程(第2版)
Linux操作系统活页式教程
李国辉
Linux系统编程(第2版)
Linux综合实训案例教程
陈智斌;梁鹏;肖政宏
Linux系统编程(第2版)
Linux系统自动化运维(Python版)(微课版)
张莉,丁传炜
Linux系统编程(第2版)
Linux操作系统
刘睿;包大宏;兰晓天;李吉桃;王仕杰;吴晓清;张宏洲;杨云江
Linux系统编程(第2版)
Linux源码趣读
闪客
Linux系统编程(第2版)
Linux 内核完全注释(20周年版) 赵炯
赵炯
Linux系统编程(第2版)
Linux网络操作系统项目式教程(CentOS 7.6)(微课版)(第2版)
刘正,张运嵩,尤澜涛主编
Linux系统编程(第2版)
Linux 内核完全剖析——基于0.12内核(15周年版) 赵炯
赵炯
Linux系统编程(第2版)
Linux高效学习教程:Linux就该这么学+Linux常用命令自学手册
刘遄 刘遄
Linux系统编程(第2版)
Linux后端开发工程实践
万木春
Linux系统编程(第2版)
Linux运维从入门到精通
明日科技
您可能感兴趣 / 更多
Linux系统编程(第2版)
争吵的恋人:我们为什么相爱,又为什么争吵
[美]约翰·金,[美]瓦妮莎·贝内特
Linux系统编程(第2版)
蒙特卡洛的密码锁(数学大师的逻辑课) 文教科普读物 [美]雷蒙德·m.斯穆里安(raymondm.smullyan)
[美]雷蒙德·m.斯穆里安(raymondm.smullyan)
Linux系统编程(第2版)
福尔摩斯的棋盘:关于国际象棋的推理题(数学大师的逻辑课)
[美]雷蒙德·m.斯穆里安
Linux系统编程(第2版)
《生命大设计.重构》(关于“生命创造现实”这一惊人事实,独特且完整的科学探索与哲学诠释)
[美]鲍勃·伯曼 著;杨泓 译;[美]罗伯特·兰札;马泰·帕夫希奇(斯洛文尼亚)
Linux系统编程(第2版)
杰出投资者的底层认知:成功投资与明智创富的10个茅塞顿开之问(《聪明的投资者》新时代精华版)
[美]J.戴维·斯坦恩(J.David Stein) 著;刘寅龙 译;庞鑫
Linux系统编程(第2版)
浴缸里的海洋
[美]塞思·菲什曼
Linux系统编程(第2版)
新视界文库-生命故事:生物学上的伟大发现
[美]肖恩·B.卡罗尔
Linux系统编程(第2版)
洛丽塔原型:小说《洛丽塔》背后的萨莉?霍纳绑架案
[美]萨拉·魏恩曼 著;真故图书 出品
Linux系统编程(第2版)
托尔斯泰
[美]莉莎·克纳普(Liza Knapp)
Linux系统编程(第2版)
奇迹之门 《纽约时报》畅销书作家写给孩子的一封“成长家书”。让父母的爱与肯定,成为孩子探索世界的底气。拥抱成长的不确定性,打开通向无限可能的“奇迹之门”。
[美]艾莉森·麦基/文 (美) 柳泰恩 图
Linux系统编程(第2版)
全球通史(全六册)(另一个角度的“全球通史”,不一样的视野与新知。以地理为骨,历史为肉,一部超级丰满的世界通史。)
[美]塞缪尔·古德里奇 译者:冷惠玲、冯佳娜、王小忠、孙丽霞、李江艳
Linux系统编程(第2版)
《星际争霸》动画影像艺术
[美]罗伯特·布鲁克斯