Linux/UNIX系统编程手册

Linux/UNIX系统编程手册
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2014-01
版次: 1
ISBN: 9787115328670
定价: 158.00
装帧: 平装
开本: 16开
纸张: 胶版纸
字数: 1618千字
原版书名: The Linux Programming Interface: A Linux and UNIX System Programming Handbook
408人买过
  •   《Linux/UNIX系统编程手册(上、下册)》是介绍Linux与UNIX编程接口的权威著作。Linux编程资深专家Michael Kerrisk在书中详细描述了Linux/UNIX系统编程所涉及的系统调用和库函数,并辅之以全面而清晰的代码示例。《Linux/UNIX系统编程手册(上、下册)》涵盖了逾500个系统调用及库函数,并给出逾200个程序示例,另含88张表格和115幅示意图。  《Linux/UNIX系统编程手册(上、下册)》总共分为64章,主要讲解了高效读写文件,对信号、时钟和定时器的运用,创建进程、执行程序,编写安全的应用程序,运用POSIX线程技术编写多线程程序,创建和使用共享库,运用管道、消息队列、共享内存和信号量技术来进行进程间通信,以及运用套接字API编写网络应用等内容。  《Linux/UNIX系统编程手册(上、下册)》在汇聚大批 Linux专有特性(epoll、inotify、/proc)的同时,还特意强化了对UNIX标准(POSIX、SUS)的论述,彻底达到了“鱼与熊掌,二者得兼”的效果,这也堪称本书的最大亮点。  《Linux/UNIX系统编程手册(上、下册)》布局合理,论述清晰,说理透彻,尤其是作者对示例代码的构思巧妙,独具匠心,仔细研读定会受益良多。本书适合从事Linux/UNIX系统开发、运维工作的技术人员阅读,同时也可作为高校计算机专业学生的参考研习资料。   全球顶尖的Linux内核黑客;

      具有20多年的UNIX系统使用和编程经验;

      自2004年起,开始维护手册页项目(该项目旨在生成描述Linux内核以及glibc编程API的手册页);

      撰写或合著了250多篇手册页;

      极参与对Linux内核/用户空间接口的测试和设计评审工作。 上册

    第1章 历史和标准 

    1.1 UNIX和C语言简史 

    1.2 Linux简史 

    1.2.1 GNU项目 

    1.2.2 Linux内核 

    1.3 标准化 

    1.3.1 C编程语言 

    1.3.2 首个POSIX标准 

    1.3.3 X/Open公司和The Open Group 

    1.3.4 SUSv3和POSIX.1-2001 

    1.3.5 SUSv4和POSIX.1-2008 

    1.3.6 UNIX标准时间表 

    1.3.7 实现标准 

    1.3.8 Linux、标准、Linux标准规范(Linux Standard Base) 

    1.4 总结 

    第2章 基本概念 

    2.1 操作系统的核心内核 

    2.2 shell 

    2.3 用户和组 

    2.4 单根目录层级、目录、链接及文件 

    2.5 文件I/O模型 

    2.6 程序 

    2.7 进程 

    2.8 内存映射 

    2.9 静态库和共享库 

    2.10 进程间通信及同步 

    2.11 信号 

    2.12 线程 

    2.13 进程组和shell任务控制 

    2.14 会话、控制终端和控制进程 

    2.15 伪终端 

    2.16 日期和时间 

    2.17 客户端服务器架构 

    2.18 实时性 

    2.19 /proc文件系统 

    2.20 总结 

    第3章 系统编程概念 

    3.1 系统调用 

    3.2 库函数 

    3.3 标准C语言函数库;GNU C语言函数库(glibc) 

    3.4 处理来自系统调用和库函数的错误 

    3.5 关于本书示例程序的注意事项 

    3.5.1 命令行选项及参数 

    3.5.2 常用的函数及头文件 

    3.6 可移植性问题 

    3.6.1 特性测试宏 

    3.6.2 系统数据类型 

    3.6.3 其他的可移植性问题 

    3.7 总结 

    3.8 练习 

    第4章 文件I/O:通用的I/O模型 

    4.1 概述 

    4.2 通用I/O 

    4.3 打开一个文件:open() 

    4.3.1 open()调用中的flags参数 

    4.3.2 open()函数的错误 

    4.3.3 creat()系统调用 

    4.4 读取文件内容:read() 

    4.5 数据写入文件:write() 

    4.6 关闭文件:close() 

    4.7 改变文件偏移量:lseek() 

    4.8 通用I/O模型以外的操作:ioctl() 

    4.9 总结 

    4.10 练习 

    第5章 深入探究文件I/O 

    5.1 原子操作和竞争条件 

    5.2 文件控制操作:fcntl() 

    5.3 打开文件的状态标志 

    5.4 文件描述符和打开文件之间的关系 

    5.5 复制文件描述符 

    5.6 在文件特定偏移量处的I/O:pread()和pwrite() 

    5.7 分散输入和集中输出(Scatter-Gather I/O):readv()和writev() 

    5.8 截断文件:truncate()和ftruncate()系统调用 

    5.9 非阻塞I/O 

    5.10 大文件I/O 

    5.11 /dev/fd目录 

    5.12 创建临时文件 

    5.13 总结 

    5.14 练习 

    第6章 进程 

    6.1 进程和程序 

    6.2 进程号和父进程号 

    6.3 进程内存布局 

    6.4 虚拟内存管理 

    6.5 栈和栈帧 

    6.6 命令行参数(argc, argv) 

    6.7 环境列表 

    6.8 执行非局部跳转:setjmp()和longjmp() 

    6.9 总结 

    6.9 练习 

    第7章 内存分配 

    7.1 在堆上分配内存 

    7.1.1 调整program break:brk()和sbrk() 

    7.1.2 在堆上分配内存:malloc()和free() 

    7.1.3 malloc()和free()的实现 

    7.1.4 在堆上分配内存的其他方法 

    7.2 在堆栈上分配内存:alloca() 

    7.3 总结 

    7.4 练习 

    第8章 用户和组 

    8.1 密码文件:/etc/passwd 

    8.2 shadow密码文件:/etc/shadow 

    8.3 组文件:/etc/group 

    8.4 获取用户和组的信息 

    8.5 密码加密和用户认证 

    8.6 总结 

    8.7 练习 

    第9章 进程凭证 

    9.1 实际用户ID和实际组ID 

    9.2 有效用户ID和有效组ID 

    9.3 Set-User-ID和Set-Group-ID程序 

    9.4 保存set-user-ID和保存set-group-ID 

    9.5 文件系统用户ID和组ID 

    9.6 辅助组ID 

    9.7 获取和修改进程凭证 

    9.7.1 获取和修改实际、有效和保存设置标识 

    9.7.2 获取和修改文件系统ID 

    9.7.3 获取和修改辅助组ID 

    9.7.4 修改进程凭证的系统调用总结 

    9.7.5 示例:显示进程凭证 

    9.8 总结 

    9.9 习题 

    第10章 时间 

    10.1 日历时间(Calendar Time) 

    10.2 时间转换函数 

    10.2.1 将time_t转换为可打印格式 

    10.2.2 time_t和分解时间之间的转换 

    10.2.3 分解时间和打印格式之间的转换 

    10.3 时区 

    10.4 地区(Locale) 

    10.5 更新系统时钟 

    10.6 软件时钟(jiffies) 

    10.7 进程时间 

    10.8 总结 

    10.9 练习 

    第11章 系统限制和选项 

    11.1 系统限制 

    11.2 在运行时获取系统限制(和选项) 

    11.3 运行时获取与文件相关的限制(和选项) 

    11.4 不确定的限制 

    11.5 系统选项 

    11.6 总结 

    11.7 练习 

    第12章 系统和进程信息 

    12.1 /proc文件系统 

    12.1.1 获取与进程有关的信息:/proc/PID 

    12.1.2 /proc 目录下的系统信息 

    12.1.3 访问/proc文件 

    12.2 系统标识:uname() 

    12.3 总结 

    12.4 练习 

    第13章 文件I/O缓冲 

    13.1 文件I/O的内核缓冲:缓冲区高速缓存 

    13.2 stdio库的缓冲 

    13.3 控制文件I/O的内核缓冲 

    13.4 I/O缓冲小结 

    13.5 就I/O模式向内核提出建议 

    13.6 绕过缓冲区高速缓存:直接I/O 

    13.7 混合使用库函数和系统调用进行文件I/O 

    13.8 总结 

    13.9 练习 

    第14章 系统编程概念 

    14.1 设备专用文件(设备文件) 

    14.2 磁盘和分区 

    14.3 文件系统 

    14.4 i节点 

    14.5 虚拟文件系统(VFS) 

    14.6 日志文件系统 

    14.7 单根目录层级和挂载点 

    14.8 文件系统的挂载和卸载 

    14.8.1 挂载文件系统:mount() 

    14.8.2 卸载文件系统:umount()和umount2() 

    14.9 高级挂载特性 

    14.9.1 在多个挂载点挂载文件系统 

    14.9.2 多次挂载同一挂载点 

    14.9.3 基于每次挂载的挂载标志 

    14.9.4 绑定挂载 

    14.9.5 递归绑定挂载 

    14.10 虚拟内存文件系统:tmpfs 

    14.11 获得与文件系统有关的信息:statvfs() 

    14.12 总结 

    14.13 练习 

    第15章 文件属性 

    15.1 获取文件信息:stat() 

    15.2 文件时间戳 

    15.2.1 使用utime()和utimes()来改变文件时间戳 

    15.2.2 使用utimensat()和futimens()改变文件时间戳 

    15.3 文件属主 

    15.3.1 新建文件的属主 

    15.3.2 改变文件属主:chown()、fchown()和lchown() 

    15.4 文件权限 

    15.4.1 普通文件的权限 

    15.4.2 目录权限 

    15.4.3 权限检查算法 

    15.4.4 检查对文件的访问权限:access() 

    15.4.5 Set-User-ID、Set-Group-ID和Sticky位 

    15.4.6 进程的文件模式创建掩码:umask() 

    15.4.7 更改文件权限:chmod()和fchmod() 

    15.5 I节点标志(ext2扩展文件属性) 

    15.6 总结 

    15.7 练习 

    第16章 扩展属性 

    16.1 概述 

    16.2 扩展属性的实现细节 

    16.3 操控扩展属性的系统调用 

    16.4 总结 

    16.5 练习 

    第17章 访问控制列表 

    17.1 概述 

    17.2 ACL权限检查算法 

    17.3 ACL的长、短文本格式 

    17.4 ACL_mask型ACE和ACL组分类 

    17.5 getfacl和setfacl命令 

    17.6 默认ACL与文件创建 

    17.7 ACL在实现方面的限制 

    17.8 ACL API 

    17.9 总结 

    17.10 练习 

    第18章 目录与链接 

    18.1 目录和(硬)链接 

    18.2 符号(软)链接 

    18.3 创建和移除(硬)链接:link()和 unlink() 
  • 内容简介:
      《Linux/UNIX系统编程手册(上、下册)》是介绍Linux与UNIX编程接口的权威著作。Linux编程资深专家Michael Kerrisk在书中详细描述了Linux/UNIX系统编程所涉及的系统调用和库函数,并辅之以全面而清晰的代码示例。《Linux/UNIX系统编程手册(上、下册)》涵盖了逾500个系统调用及库函数,并给出逾200个程序示例,另含88张表格和115幅示意图。  《Linux/UNIX系统编程手册(上、下册)》总共分为64章,主要讲解了高效读写文件,对信号、时钟和定时器的运用,创建进程、执行程序,编写安全的应用程序,运用POSIX线程技术编写多线程程序,创建和使用共享库,运用管道、消息队列、共享内存和信号量技术来进行进程间通信,以及运用套接字API编写网络应用等内容。  《Linux/UNIX系统编程手册(上、下册)》在汇聚大批 Linux专有特性(epoll、inotify、/proc)的同时,还特意强化了对UNIX标准(POSIX、SUS)的论述,彻底达到了“鱼与熊掌,二者得兼”的效果,这也堪称本书的最大亮点。  《Linux/UNIX系统编程手册(上、下册)》布局合理,论述清晰,说理透彻,尤其是作者对示例代码的构思巧妙,独具匠心,仔细研读定会受益良多。本书适合从事Linux/UNIX系统开发、运维工作的技术人员阅读,同时也可作为高校计算机专业学生的参考研习资料。
  • 作者简介:
      全球顶尖的Linux内核黑客;

      具有20多年的UNIX系统使用和编程经验;

      自2004年起,开始维护手册页项目(该项目旨在生成描述Linux内核以及glibc编程API的手册页);

      撰写或合著了250多篇手册页;

      极参与对Linux内核/用户空间接口的测试和设计评审工作。
  • 目录:
    上册

    第1章 历史和标准 

    1.1 UNIX和C语言简史 

    1.2 Linux简史 

    1.2.1 GNU项目 

    1.2.2 Linux内核 

    1.3 标准化 

    1.3.1 C编程语言 

    1.3.2 首个POSIX标准 

    1.3.3 X/Open公司和The Open Group 

    1.3.4 SUSv3和POSIX.1-2001 

    1.3.5 SUSv4和POSIX.1-2008 

    1.3.6 UNIX标准时间表 

    1.3.7 实现标准 

    1.3.8 Linux、标准、Linux标准规范(Linux Standard Base) 

    1.4 总结 

    第2章 基本概念 

    2.1 操作系统的核心内核 

    2.2 shell 

    2.3 用户和组 

    2.4 单根目录层级、目录、链接及文件 

    2.5 文件I/O模型 

    2.6 程序 

    2.7 进程 

    2.8 内存映射 

    2.9 静态库和共享库 

    2.10 进程间通信及同步 

    2.11 信号 

    2.12 线程 

    2.13 进程组和shell任务控制 

    2.14 会话、控制终端和控制进程 

    2.15 伪终端 

    2.16 日期和时间 

    2.17 客户端服务器架构 

    2.18 实时性 

    2.19 /proc文件系统 

    2.20 总结 

    第3章 系统编程概念 

    3.1 系统调用 

    3.2 库函数 

    3.3 标准C语言函数库;GNU C语言函数库(glibc) 

    3.4 处理来自系统调用和库函数的错误 

    3.5 关于本书示例程序的注意事项 

    3.5.1 命令行选项及参数 

    3.5.2 常用的函数及头文件 

    3.6 可移植性问题 

    3.6.1 特性测试宏 

    3.6.2 系统数据类型 

    3.6.3 其他的可移植性问题 

    3.7 总结 

    3.8 练习 

    第4章 文件I/O:通用的I/O模型 

    4.1 概述 

    4.2 通用I/O 

    4.3 打开一个文件:open() 

    4.3.1 open()调用中的flags参数 

    4.3.2 open()函数的错误 

    4.3.3 creat()系统调用 

    4.4 读取文件内容:read() 

    4.5 数据写入文件:write() 

    4.6 关闭文件:close() 

    4.7 改变文件偏移量:lseek() 

    4.8 通用I/O模型以外的操作:ioctl() 

    4.9 总结 

    4.10 练习 

    第5章 深入探究文件I/O 

    5.1 原子操作和竞争条件 

    5.2 文件控制操作:fcntl() 

    5.3 打开文件的状态标志 

    5.4 文件描述符和打开文件之间的关系 

    5.5 复制文件描述符 

    5.6 在文件特定偏移量处的I/O:pread()和pwrite() 

    5.7 分散输入和集中输出(Scatter-Gather I/O):readv()和writev() 

    5.8 截断文件:truncate()和ftruncate()系统调用 

    5.9 非阻塞I/O 

    5.10 大文件I/O 

    5.11 /dev/fd目录 

    5.12 创建临时文件 

    5.13 总结 

    5.14 练习 

    第6章 进程 

    6.1 进程和程序 

    6.2 进程号和父进程号 

    6.3 进程内存布局 

    6.4 虚拟内存管理 

    6.5 栈和栈帧 

    6.6 命令行参数(argc, argv) 

    6.7 环境列表 

    6.8 执行非局部跳转:setjmp()和longjmp() 

    6.9 总结 

    6.9 练习 

    第7章 内存分配 

    7.1 在堆上分配内存 

    7.1.1 调整program break:brk()和sbrk() 

    7.1.2 在堆上分配内存:malloc()和free() 

    7.1.3 malloc()和free()的实现 

    7.1.4 在堆上分配内存的其他方法 

    7.2 在堆栈上分配内存:alloca() 

    7.3 总结 

    7.4 练习 

    第8章 用户和组 

    8.1 密码文件:/etc/passwd 

    8.2 shadow密码文件:/etc/shadow 

    8.3 组文件:/etc/group 

    8.4 获取用户和组的信息 

    8.5 密码加密和用户认证 

    8.6 总结 

    8.7 练习 

    第9章 进程凭证 

    9.1 实际用户ID和实际组ID 

    9.2 有效用户ID和有效组ID 

    9.3 Set-User-ID和Set-Group-ID程序 

    9.4 保存set-user-ID和保存set-group-ID 

    9.5 文件系统用户ID和组ID 

    9.6 辅助组ID 

    9.7 获取和修改进程凭证 

    9.7.1 获取和修改实际、有效和保存设置标识 

    9.7.2 获取和修改文件系统ID 

    9.7.3 获取和修改辅助组ID 

    9.7.4 修改进程凭证的系统调用总结 

    9.7.5 示例:显示进程凭证 

    9.8 总结 

    9.9 习题 

    第10章 时间 

    10.1 日历时间(Calendar Time) 

    10.2 时间转换函数 

    10.2.1 将time_t转换为可打印格式 

    10.2.2 time_t和分解时间之间的转换 

    10.2.3 分解时间和打印格式之间的转换 

    10.3 时区 

    10.4 地区(Locale) 

    10.5 更新系统时钟 

    10.6 软件时钟(jiffies) 

    10.7 进程时间 

    10.8 总结 

    10.9 练习 

    第11章 系统限制和选项 

    11.1 系统限制 

    11.2 在运行时获取系统限制(和选项) 

    11.3 运行时获取与文件相关的限制(和选项) 

    11.4 不确定的限制 

    11.5 系统选项 

    11.6 总结 

    11.7 练习 

    第12章 系统和进程信息 

    12.1 /proc文件系统 

    12.1.1 获取与进程有关的信息:/proc/PID 

    12.1.2 /proc 目录下的系统信息 

    12.1.3 访问/proc文件 

    12.2 系统标识:uname() 

    12.3 总结 

    12.4 练习 

    第13章 文件I/O缓冲 

    13.1 文件I/O的内核缓冲:缓冲区高速缓存 

    13.2 stdio库的缓冲 

    13.3 控制文件I/O的内核缓冲 

    13.4 I/O缓冲小结 

    13.5 就I/O模式向内核提出建议 

    13.6 绕过缓冲区高速缓存:直接I/O 

    13.7 混合使用库函数和系统调用进行文件I/O 

    13.8 总结 

    13.9 练习 

    第14章 系统编程概念 

    14.1 设备专用文件(设备文件) 

    14.2 磁盘和分区 

    14.3 文件系统 

    14.4 i节点 

    14.5 虚拟文件系统(VFS) 

    14.6 日志文件系统 

    14.7 单根目录层级和挂载点 

    14.8 文件系统的挂载和卸载 

    14.8.1 挂载文件系统:mount() 

    14.8.2 卸载文件系统:umount()和umount2() 

    14.9 高级挂载特性 

    14.9.1 在多个挂载点挂载文件系统 

    14.9.2 多次挂载同一挂载点 

    14.9.3 基于每次挂载的挂载标志 

    14.9.4 绑定挂载 

    14.9.5 递归绑定挂载 

    14.10 虚拟内存文件系统:tmpfs 

    14.11 获得与文件系统有关的信息:statvfs() 

    14.12 总结 

    14.13 练习 

    第15章 文件属性 

    15.1 获取文件信息:stat() 

    15.2 文件时间戳 

    15.2.1 使用utime()和utimes()来改变文件时间戳 

    15.2.2 使用utimensat()和futimens()改变文件时间戳 

    15.3 文件属主 

    15.3.1 新建文件的属主 

    15.3.2 改变文件属主:chown()、fchown()和lchown() 

    15.4 文件权限 

    15.4.1 普通文件的权限 

    15.4.2 目录权限 

    15.4.3 权限检查算法 

    15.4.4 检查对文件的访问权限:access() 

    15.4.5 Set-User-ID、Set-Group-ID和Sticky位 

    15.4.6 进程的文件模式创建掩码:umask() 

    15.4.7 更改文件权限:chmod()和fchmod() 

    15.5 I节点标志(ext2扩展文件属性) 

    15.6 总结 

    15.7 练习 

    第16章 扩展属性 

    16.1 概述 

    16.2 扩展属性的实现细节 

    16.3 操控扩展属性的系统调用 

    16.4 总结 

    16.5 练习 

    第17章 访问控制列表 

    17.1 概述 

    17.2 ACL权限检查算法 

    17.3 ACL的长、短文本格式 

    17.4 ACL_mask型ACE和ACL组分类 

    17.5 getfacl和setfacl命令 

    17.6 默认ACL与文件创建 

    17.7 ACL在实现方面的限制 

    17.8 ACL API 

    17.9 总结 

    17.10 练习 

    第18章 目录与链接 

    18.1 目录和(硬)链接 

    18.2 符号(软)链接 

    18.3 创建和移除(硬)链接:link()和 unlink() 
查看详情
其他版本 / 全部 (1)
相关图书 / 更多
Linux/UNIX系统编程手册
LiteOS轻量级物联网操作系统实战 微课视频版
魏杰
Linux/UNIX系统编程手册
Linux综合实训案例教程
陈智斌;梁鹏;肖政宏
Linux/UNIX系统编程手册
Linux操作系统项目化教程
周秀丽;张徐超;周密
Linux/UNIX系统编程手册
Linux操作系统
刘睿;包大宏;兰晓天;李吉桃;王仕杰;吴晓清;张宏洲;杨云江
Linux/UNIX系统编程手册
Linux C语言程序设计(微课视频版)
张同光;田文强;荆春棋;田乔梅;陈明
Linux/UNIX系统编程手册
Linux虚拟化——原理、方法和实战(KVM+Docker+OpenStack)
吴光科;李建尧;柯宇霖
Linux/UNIX系统编程手册
Linux源码趣读
闪客
Linux/UNIX系统编程手册
Linux自动化运维实战(Linux开发书系)
吴光科;彭威城;文·S
Linux/UNIX系统编程手册
Linux云计算——Kubernetes实战
吴光科;程浩;刑亚飞
Linux/UNIX系统编程手册
Linux运维从入门到精通
明日科技
Linux/UNIX系统编程手册
Linux操作系统项目化教程(第2版)
洪伟 主编;丁传炜 谢鹏 副主编
Linux/UNIX系统编程手册
Linux企业高性能架构实战
吴光科;曹森;赵瑞丰
您可能感兴趣 / 更多
Linux/UNIX系统编程手册
男子汉的诗学(汉译人类学名著丛书)
Michael Herzfeld
Linux/UNIX系统编程手册
你好,长安(英文)
Michael、A.Stone 著
Linux/UNIX系统编程手册
第二语言需求分析(当代国外语言学与应用语言学文库)(升级版)
Michael H. Long
Linux/UNIX系统编程手册
萨满教、殖民主义与野人:关于恐惧与治疗的研究(汉译人类学名著丛书)
Michael Taussig
Linux/UNIX系统编程手册
量子计算与量子信息:10周年版
Michael A.Nielsen Isaac L.Chuang 著;孙晓明 尚云 李绿周 尹璋琦 魏朝晖 田国敬 译
Linux/UNIX系统编程手册
智能型职业生涯
Michael B. Arthur
Linux/UNIX系统编程手册
侧方入路微创脊柱外科学
Michael Y. Wang Andrew A. Sama Juan S. Uribe 主编
Linux/UNIX系统编程手册
微创脊柱畸形外科学
Michael Y. Wang 主编;晋大祥 郑召民 海涌 吕国华 主译
Linux/UNIX系统编程手册
米勒麻醉学(第 9 版)(上下卷)
Michael A. Gropper;邓小明 黄宇光 李文志
Linux/UNIX系统编程手册
临床超声口袋手册
Michael 著;Angela、Creditt、Jordan、Tozer、卞金俊、王嘉锋、赵佳琦 译
Linux/UNIX系统编程手册
实用临床药物治疗学神经系统疾病
Michael G.Carvalho 编;Caroline S.Zeind、国家卫生健康委医院管理研究所药事管理研究所、金有豫、韩英、王长连、吴钢 译
Linux/UNIX系统编程手册
汗青堂丛书072·伊朗简史:从琐罗亚斯德到今天
Michael、Axworthy 著