"这篇资源主要讨论了UNIX环境中的信号(Signal)概念,特别是在鸿鹄论坛华为认证H35-211-HCNP-Access Network题库中的相关内容。此外,资源还涵盖了UNIX的基础知识,包括登录、文件和目录、输入输出、程序与进程、ANSI C标准、错误处理、用户标识、时间值、系统调用和库函数等。"
在UNIX系统中,信号是一种通信机制,用于通知进程发生了特定的事件。信号的概念始于它们的名字,通常以"SIG"开头,如SIGABRT(进程终止信号)和SIGALRM(闹钟信号)。不同版本的UNIX支持不同数量的信号,V7有15种,而SVR4和4.3+BSD则有31种。在头文件<signal.h>中,这些信号被定义为正整数,称为信号编号。信号编号0在POSIX.1中被称为空信号,有特殊的用途。
信号可以由多种情况触发:
1. 用户按下特定终端键,如DELETE键可能引发中断信号(SIGINT)。
2. 硬件异常,如除以零或非法内存访问,会由硬件检测并通知内核,内核随后向相应进程发送对应的信号,如SIGSEGV(段错误)。
3. 进程可以使用kill(2)函数向其他进程或进程组发送信号,但受权限限制。
4. 用户通过kill(1)命令可以向其他进程发送信号,常用于结束失控的后台进程。
5. 软件条件,如非规定的网络波特率(SIGURG)、写入已关闭管道(SIGPIPE)或超时的闹钟(SIGALRM)也会触发信号。
信号是异步事件,对进程来说是随机发生的。进程无法直接检查变量来检测信号,而需要注册信号处理器或利用内核机制来响应信号的发生。
资源还提到了UNIX的基础知识,包括:
- 登录过程涉及登录名和shell。
- 文件和目录的管理,如文件系统、文件名、路径名、工作目录和起始目录。
- 输入输出机制,包括文件描述符、标准输入/输出/错误、无缓冲I/O和标准I/O库。
- 程序和进程的概念,如进程ID和进程控制。
- ANSI C标准的介绍,包括函数原型、类属指针和原始系统数据类型。
- 出错处理,涉及错误码(errno)和信号在错误处理中的角色。
- 用户标识,如用户ID、组ID及其管理。
- UNIX时间值的处理。
- 系统调用和库函数的区别。
- UNIX的标准化(如ANSI C、IEEE POSIX、X/Open XPG3和FIPS 151-1)及其与各种实现的关系,如SVR4和4.3+BSD。
这些内容是学习和理解UNIX环境高级编程的关键部分,特别是对于准备华为认证H35-211-HCNP-Access Network考试的考生来说至关重要。