UNIX文件基础:I/O操作、进程控制与错误处理详解
需积分: 9 197 浏览量
更新于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 上传
918 浏览量
2451 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
7526
- 粉丝: 0
- 资源: 1
最新资源
- 俄罗斯RTSD数据集实现交通标志实时检测
- 易语言开发的文件批量改名工具使用Ex_Dui美化界面
- 爱心援助动态网页教程:前端开发实战指南
- 复旦微电子数字电路课件4章同步时序电路详解
- Dylan Manley的编程投资组合登录页面设计介绍
- Python实现H3K4me3与H3K27ac表观遗传标记域长度分析
- 易语言开源播放器项目:简易界面与强大的音频支持
- 介绍rxtx2.2全系统环境下的Java版本使用
- ZStack-CC2530 半开源协议栈使用与安装指南
- 易语言实现的八斗平台与淘宝评论采集软件开发
- Christiano响应式网站项目设计与技术特点
- QT图形框架中QGraphicRectItem的插入与缩放技术
- 组合逻辑电路深入解析与习题教程
- Vue+ECharts实现中国地图3D展示与交互功能
- MiSTer_MAME_SCRIPTS:自动下载MAME与HBMAME脚本指南
- 前端技术精髓:构建响应式盆栽展示网站