文件介绍
文件定义
文件(File)是一个具有符号名字的一组相关联元素的有序序列。
文件分类
在Linux中,我们可以使用ls -l指令来查看文件的类型。在Linux系统中,文件主要有7种类型。
- 普通文件 指ASCII文本文件、二进制文件以及硬链接文件
d 目录文件 包含若干文件或子目录
l 符号链接 只保留所指向文件的地址而非文件本身
p 管道文件 用于进程间通信
c 字符设备 原始的I/O设备文件,每次操作仅操作1个字符(例如键盘)
b 块设备 按块I/O设备文件(例如硬盘)
s 套接字 套接字是方便进程间通信的特殊文件,
与管道不同的是套接字能通过网络连接使不同的计算机的进程进行通信
系统调用
标准IO与文件IO
-
文件IO遵循POSIX标准,只能在遵循POSIX标准的类UNIX环境下使用。
标准IO遵循ANSI标准,只要重新编译就可以在不同的环境下运行。
即:文件IO属于系统文件只能在linux下进行系统调用,可移植性差。 标准IO属于C库(意思是C语言环境),可以在不同的操作系统下移植使用。
-
文件IO使用文件描述符(fd:起的编号),标准IO使用文件流指针(结构体:包含文件的各种数据)。
-
通过文件I/O读写文件时,每次操作都会执行相关系统调用。这样的好处是直接读写实际文件,坏处是频繁的系统调用会增加系统开销。
标准I/O在文件I/O的基础上封装了缓冲机制,每次先操作缓冲区,必要时再访问文件,从而减少了系统调用的次数。 -
文件IO属于系统调用,可以访问不同类型的文件,
如普通文件,设备文件(open时不能create),管道文件,套接字文件等;
标准IO属于C库只能访问普通文件。