基本概念 大多数Linux资源以文件的方式来访问,结果在Linux上有了许多种文件。 - 普通文件,
磁盘文件,能够进行随机存取的数据存储单位。 - 符号链接,
- 目录,
目录文件,包含了目录中文件列表的文件。 - 设备,
设备文件,该文件提供了到大多数物理设备的接口,保存在/dev目录下。他们不是字符型特殊文件就是块特殊文件。 字符型特殊文件,一次只能读写一个字节或字符的数据。如,调制解调器,打印机,声卡等。一般用于传输数据。 块特殊文件,必须以一定大小的块来读写数据。如,cd-rom, cd-ram,磁盘驱动器。一般用于存储数据。 - 套接字
像管道,但是可以跨机器进程通信。 - 无名管道和有名管道,unamed pipe & named pipe
管道是一个数据通道,一端执行写入,一端执行读出。 无名管道根据需要在内存中创建,通过数字来引用。 有名管道一般在两个进程需要共享数据而又没有共享文件描述符的时候。 Linux的文件抽象对于所有的东西都按文件来处理,比如,打开,读写,关闭。 文件描述符 文件描述符是个很小正整数,它是一个索引值,指向内核为每一个进程所维护的打开文件的记录表。 每个进程都能打开3个文件,stdin, stdou, stderr。这3个文件对应的描述符是0, 1, 2。 基于描述符的I/O操作最主要的缺点是它不能移植到UNIX以外的系统上去。如果要移植到一个非Linux的环境中,最好使用C标准的I/O功能。 fopen与open的全部 fopen是c语言库函数,open是linux系统函数。 fopen返回文件指针,open返回文件描述符。 设备文件不可以当成流式文件来用,只能用open,fopen是用来操纵正规文件的,并且设有缓冲的。 熟悉了open, close, read, write, lseek, fstat, fcntl, dup, dup2, select, ioctl函数。 标准c的I/O库,包括fopen, fread, fwrite, fclose。 目录操作 目录也可以称为目录文件。 getcwd, chdir, fchdir, mkdir, rmdir, opendir, readdir, closedir。 |