1、定义
文件:一组相关数据的有序集合。
文件名:这个数据集合的名称。
2、文件类型
Linux上一切皆文件
常规文件: -
}ASCII码文件
}二进制的文件
目录: d
字符设备: c
块设备: b
有名管道: p
套接口: s
符号链接: l
3、系统调用和库函数
系统调用
用户空间进程访问内核的接口
把用户从底层的硬件编程中解放出来
极大的提高了系统的安全性
使用户程序具有可移植性
是操作系统的一部分
库函数
库函数为了实现某个功能而封装起来的API集合
提供统一的编程接口,更加便于应用程序的移植
是语言或者应用程序的一部分
4、输入输出
文件描述符
顺序分配的非负整数
内核用以标识一个特定进程正在访问的文件
其他资源(socket、pipe等)的访问标识
标准输入、标准输出和标准出错
由shell默认打开,分别为0/1/2
不用缓存的I/O
通过文件描述符进行访问
open()/read()/write()/lseek()/close()…
标准I/O
通过FILE*进行访问
printf()/fprintf()/fopen()/fread()/fwrite()/fseek()/fclose()…
6、出错处理
全局错误码errno
在errno.h中定义,全局可见
错误值定义为“EXXX”形式,如EACCESS
处理规则
如果没有出错,则errno值不会被一个例程清除,即只有出错时,才需要检查errno值
任何函数都不会将errno值设置为0,errno.h中定义了所有常数都不为0
错误信息输出
strerror() - 映射errno对应的错误信息
perror() – 输出用户信息及errno对应的错误信息
#include <string.h>
char *strerror(int errnum);
参数: errnum --- 错误码
返回值: 错误码对应的错误信息
#include <stdio.h>
void perror(const char *s);
参数: s --- 错误信息提示符