UNIX环境高级编程学习笔记:第1章详解

需积分: 0 3 下载量 101 浏览量 更新于2024-08-02 收藏 597KB PDF 举报
"UNIX环境高级编程共23章" 在深入探讨UNIX环境高级编程的知识点之前,首先要明白本书的焦点在于讲解如何在UNIX操作系统环境下进行高效和专业的编程工作。书中涵盖的内容广泛,包括进程管理、文件操作、I/O系统、网络通信等多个核心主题。 1. **i节点与文件系统**: - `ls -li` 命令用于显示文件或目录的详细信息,其中`-i`选项用于显示文件的i节点号。i节点是文件系统中记录文件元数据(如权限、大小、创建时间等)的数据结构,每个文件或目录都有一个唯一的i节点号。 - 例子中的`ls -ldi /./..`展示了根目录`/`的i节点号为2,这表明`/`和`/./`、`/../`实际上指的是同一个目录,因为它们共享相同的i节点。 2. **多任务并发执行**: - UNIX是一个多任务操作系统,允许同时执行多个进程。在例子中提到的程序1-4运行时,系统中可以有其他进程同时运行,体现了UNIX的并发性特点。 3. **const关键字**: - 在C语言中,`const`关键字用于声明常量指针或者指针常量,确保变量不可被函数内部修改。在1.3节中,通过使用`const`可以防止函数`perror`改变`ptr`所指字符串的内容,确保数据安全。 4. **errno与错误处理**: - `errno`全局变量在C语言中用于存储系统调用或库函数出错时的错误代码。调用`fflush`、`fprintf`、`vprintf`等函数可能会改变`errno`的值,如果未保存并检查`errno`,错误信息可能无法正确传达,导致调试困难。例如,不保存`errno`可能导致错误信息"Nota typer writer"出现。 5. **标准I/O流与缓冲区**: - 标准I/O库(如stdio.h中的函数)会根据I/O流是否连接到终端设备来决定是否启用缓冲。`isatty()`函数可以用来检测一个文件描述符是否对应终端。如果流不指向终端,如重定向到文件或管道,`errno`可能会被设置为`ENOTTY`,表示没有相应的终端设备,影响输出。 6. **程序C-1的分析**: - 程序C-1展示了`errno`与`printf`函数交互的例子,它可能用于演示当输出重定向到非终端设备时,如何影响`errno`的处理和错误信息的显示。 这些内容涉及了UNIX系统编程的基本概念,包括文件系统结构、进程并发、常量指针的使用、错误处理机制以及标准I/O流的特性。对于想要深入理解UNIX环境下的系统级编程的开发者来说,这些都是不可或缺的知识点。