UNIX文件基础:I/O操作、进程控制与错误处理详解
需积分: 9 5 浏览量
更新于2024-07-24
收藏 905KB PDF 举报
本资源是一份关于UNIX系统文件基础的学习资料,涵盖了多个关键主题,包括文件描述符、标准输入输出、文件I/O与标准I/O操作、程序和进程、出错处理以及用户标识。以下是对这些知识点的详细解读:
1. **文件描述符**:
文件描述符是UNIX/Linux系统中用于标识一个进程与特定文件或资源(如socket和pipe)关联的整数。它是顺序分配的非负值,内核通过它跟踪进程对文件的访问。0, 1, 和 2通常分别代表标准输入、标准输出和标准错误。
2. **标准输入输出和标准出错**:
标准I/O是预定义的文件描述符,shell会自动将其连接到终端设备,允许进程通过这些描述符进行交互。标准输入(stdin, 0)、标准输出(stdout, 1)和标准错误(stderr, 2)是编程中的常用流。
3. **文件I/O与标准I/O**:
- **文件I/O**:通过文件描述符进行操作,如`open()`打开文件,`read()`和`write()`读写数据,`lseek()`定位文件指针,`close()`关闭文件。这些是操作系统级的接口。
- **标准I/O**:通过`FILE *`结构体进行操作,如`printf()`和`fprintf()`进行格式化输出,`fopen()`打开文件,`fread()`和`fwrite()`读写二进制数据等。这些是C语言标准库提供的高级接口,通常在用户空间使用。
4. **程序与进程**:
- **程序**:静态的可执行文件,通过`exec()`函数家族启动新的进程。
- **进程**:程序的运行实例,有唯一的进程标识符(pid)和父进程标识符(ppid),可以通过`fork()`创建子进程,`exec()`替换进程内容,`wait()`和`waitpid()`等待子进程结束。
5. **出错处理**:
- **全局错误码errno**:系统错误信息的统一存储,错误值以"EXXX"形式表示,如EACCESS表示无权限访问。
- **错误处理规则**:仅在发生错误时检查errno,且函数不会清零它,所有非零值都对应于预定义的错误常量。
- **错误信息输出**:`strerror()`返回对应errno的字符串描述,`perror()`提供包含错误信息和errno值的用户友好的输出。
6. **用户标识**:
- **用户ID (uid)**:区分不同用户,存储在/etc/passwd文件中,`getuid()`函数用于获取当前用户uid,文件权限与uid相关。
- **组ID (gid)**:用户组织管理,存储在/etc/group中,与用户关联的gid也影响文件权限。
- **实际用户ID和有效用户ID**:进程控制中涉及的概念,可能与用户实际权限不同。
7. **系统调用与库函数**:
- **系统调用**:用户进程与内核通信的关键接口,提供了操作系统级别的功能,提高了安全性和移植性。
这份资料深入浅出地介绍了UNIX/Linux系统中的基础文件操作、进程管理、错误处理和用户权限管理,对于理解和编写UNIX/Linux环境下的程序至关重要。
2009-09-22 上传
2009-09-08 上传
2020-03-31 上传
2023-06-20 上传
2024-04-11 上传
2023-07-14 上传
2023-05-25 上传
2024-04-09 上传
2023-09-18 上传
7526
- 粉丝: 0
- 资源: 1