
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
历时数月,终于完成了《UNIX环境高级编程》(第3版)全书21章的学习。这本被誉为UNIX系统编程“圣经”的巨著,由W. Richard Stevens和Stephen A. Rago合著,涵盖了UNIX/Linux环境下系统级编程的方方面面。本文是对全书知识体系的系统性总结,按照内容逻辑分为六大模块,提炼核心概念、关键函数、设计模式和实践技巧,并附有代表性的代码片段和架构图,希望能为同样在学习A
第十五章讨论的是Unix域协议(Unix Domain Protocol)。Unix域协议并非一个实际的协议族,而是在单台主机上执行客户/服务器通信的一种方法,所用的API与在不同主机上执行客户/服务器通信所用的套接字API完全相同。Unix域提供两类套接字:字节流套接字(SOCK_STREAM,类似TCP)和数据报套接字(SOCK_DGRAM,类似UDP),此外Linux自2.6.4起还支持SO
第十三章聚焦于Unix/Linux系统中不可或缺的守护进程概念。在Unix系统中,用户通常与shell进行交互式会话。然而,许多网络服务需要在后台默默运行,不受用户登录/注销的影响,甚至需要在系统引导时启动。这些服务程序就是守护进程,它们没有控制终端,在后台运行,执行各种管理任务。本章的核心任务是:理解守护进程的本质,掌握将普通进程转化为守护进程的完整步骤,了解syslog日志系统的运作机制,以及
第十二章深入探讨IPv4向IPv6过渡期的核心问题——互操作性。在向IPv6转换的漫长过渡期内,主机和路由器会同时运行着IPv4协议栈和IPv6协议栈很多年。IPv4客户端如何与IPv6服务器通信?IPv6客户端如何与IPv4服务器通信?本章假设所有讨论的主机都运行着双栈(即同时拥有IPv4和IPv6协议栈),重点讨论客户端与服务器端使用不同类型地址的场景——因为相同类型的地址通信是直截了当的,没
第十一章是《UNIX网络编程》中极其关键的一章。到此为止,书中所有例子都使用数值地址表示主机(如 206.6.226.33),使用数值端口号标识服务器(如端口 13 代表 daytime 服务器)。但出于三个理由,我们应该使用名字而非数值:名字更容易记住;数值地址可以变动而名字保持不变;随着向 IPv6 过渡,数值地址变得非常长,手工键入数值地址更容易出错。本章的核心主题是实现主机名与 IP 地址
第十章是对第九章理论的实战验证。第九章详细介绍了SCTP的基本套接字API,本章则运用这些API编写一个完整的一到多式SCTP回射客户/服务器程序。客户从标准输入读入一行文本,格式为[#]text(方括号中的数字表示要在这个流号上发送该文本消息)服务器接收后,将接收消息的流号加1,然后在新流号上发回客户读取回射行并打印,同时列出**流号、流序列号(SSN)**和新流号解决头端阻塞问题。流序列号在每
第七章在前六章的基础上,深入探讨套接字编程中的一个重要课题——套接字选项(Socket Options)。前几章学习了套接字的基本API和I/O复用,但这些都是在默认行为下使用套接字。而实际应用中,往往需要调整套接字的行为来满足特定需求。套接字选项是用于控制和获取套接字行为的一系列参数,涵盖了从通用套接字层到协议特定层的各种属性。本章的核心是介绍如何获取和设置这些选项,以及每个重要选项的用途和注意
第六章解决了第五章遗留的核心痛点:当客户同时处理标准输入和TCP套接字时,若阻塞于fgets等待用户输入,而服务器提前终止,客户端直到尝试读取套接字时才能发现EOF,这可能需要漫长的等待。本章引入的I/O复用机制,正是为了解决这一类问题。I/O复用(I/O Multiplexing)是指进程预先告知内核需要监视多个描述符,内核一旦发现其中任何一个描述符就绪(即输入已准备好被读取,或描述符已能承受更
第五章是UNP全书中真正开始“打仗”的一章。编写一个完整的、能在真实网络环境中运行的、能够处理各种异常情况的TCP客户/服务器程序。本章通过一个TCP回射(Echo)服务器僵尸进程问题:并发服务器中fork出的子进程终止后如何被正确回收?信号处理:SIGCHLD信号的正确捕获方式,为什么wait不够而必须使用waitpid?系统调用中断:慢系统调用被信号中断后如何处理EINTR?服务器故障场景分析
第五章是UNP全书中真正开始“打仗”的一章。编写一个完整的、能在真实网络环境中运行的、能够处理各种异常情况的TCP客户/服务器程序。本章通过一个TCP回射(Echo)服务器僵尸进程问题:并发服务器中fork出的子进程终止后如何被正确回收?信号处理:SIGCHLD信号的正确捕获方式,为什么wait不够而必须使用waitpid?系统调用中断:慢系统调用被信号中断后如何处理EINTR?服务器故障场景分析







