五、文件类型
文件类型:
- 常规文件:普通的文本或二进制文件
- 目录文件:用于存储其他文件或目录的容器
- 字符文件:用于存储字符数据的文件,如终端设备文件
- 块文件:用于存储二进制数据的文件,如磁盘分区文件
- 链接文件:类似于Windows中的快捷方式,指向另一个文件或目录
六、系统调用与库函数
系统调用:
- 系统调用是操作系统提供的接口函数,用于访问底层硬件资源或执行特权操作。例如,open、close、read、write等都是系统调用。
库函数:
- 库函数是对系统调用的封装,提供程序的可移植性。例如,printf、fopen、fclose等都是库函数。库函数通过调用系统调用来实现功能。
七、缓冲区
缓冲区概念:
- 缓冲区是为了减少对IO设备的直接访问次数而设置的内存区域。缓冲区可以减少磁盘I/O次数,提高系统效率。
缓冲区类型:
- 全缓冲:缓冲区满时才输出到磁盘。
- 行缓冲:遇到换行符时输出到磁盘。
- 不带缓冲:直接输出到磁盘。
八、标准IO
标准输入输出:
- 标准输入(STDIN): 通常是键盘输入,文件描述符为0。
- 标准输出(STDOUT): 通常是显示器输出,文件描述符为1。
- 标准错误输出(STDERR): 通常是显示器输出错误信息,文件描述符为2。
标准IO函数:
- getchar、puts等用于标准输入输出。
缓冲区大小:
- 标准IO的磁盘文件缓冲区大小一般为4096字节。
- 标准输出的全缓冲区大小为1024字节。
九、文件IO与标准IO
文件IO:
- 文件IO又称系统IO,是指直接使用系统调用进行文件操作。
- 文件IO不提供缓冲机制。
标准IO:
- 标准IO是对文件IO的封装,提供了缓冲机制。
十、编译错误告警
常见编译错误告警:
- 未声明变量:error: ‘errno’ undeclared (first use in this function)
- 函数隐示声明:warning: implicit declaration of function ‘strerror’
- 参数类型不匹配:warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’
解决方法:
- 包含对应头文件。
- 显示声明函数。
- 使用强制类型转换。