用户可以通过命令对文件进行操作 ,但功能上受到一定限制。
程序员通过系统调用或C语言库函数对文件进行操作。
gcc 会 自动链接一些常用的库,对于gcc 不会自动链接的库,则在编译程序时需要指定所使用的库
形式:
可以通过man 命令来查询函数原型及所属头文件。例: man lseek
有些函数既是函数名又是linux命令
~man mkdir 得到的是命令mkdir的帮助信息
~man 2 mkdir 得到函数的原型
对于库函数,输入man3<库函数名>可以获取帮助信息
文件主要包含两方面内容:
~文件本身所包含的数据
~文件属性
当创建一个新目录时,系统自动创建两个目录项。.和.. 前者代表当前目录,后者代表当前目录的父目录。 对于根目录来说两者相同。
一般linux的目录
~/bin 用于存放普通用户可执行的命令。任何用户可执行
~/boot linux 内核及启动系统时所需文件。 为安全,此目录存放在独立的分区中。
~/dev 设备文件的存储目录 ,如 硬盘光驱等。
~/etc 用于存放系统所需的配置文件。 如账户密码存放在/etc/password 和 /etc/shadow.
~/home 普通用户的主目录
~/lib 用于存放各种库文件
~/proc 虚拟的文件系统,只有在系统运行时才存在,访问该目录文件,可以获取系统的状态信息并且修改某些系统的配置信息。例 cat /proc/meminfo 可以获取当前系统内存使用情况。
~/root 超级用户root的主目录
~/sbin 存放的时用于管理系统的命令
~/tmp 临时文件目录
~/usr 用于存放系统应用程序及相关文件 如:说明文档,帮助文件等
~/var 用于存放系统中经常变化的文件 如:日志文件用户邮件等
对物理磁盘的访问都是通过驱动设备来进行的
~通过设备驱动本身提供的借口 ,用户绕过文件系统直接读取磁盘上的内容。不稳定性,一般不用。
~通过虚拟文件系统提供给上层应用程序的接口。
VFS
将各种不同的文件系统整合到一起,并提供统一的应用程序编程接口(API)供上层的应用程序使用。
是虚拟的存在于内存而不存在于磁盘,只有系统运行起来才可使用。
特点:支持多种不同的文件系统。
文件分类:普通文件、目录文件、字符特殊文件、块特殊文件、FIFO(进程间通信,命名管道)、套接字、符号连接(指向另一文件,是另一文件的引用)
ls -l <filename>查看文件的属性
r 可读 w 可写 x 可执行
修改文件权限 shell下使用chmod 命令 例:chmod 777 test.c
函数chmod 原型:
#include <sys/types.h>
#include <sys/stat.h>
int chmod(const char *path , mode_t mode);
int fchmod(int fildes , mode_t mode)
参数mode 为八进制值
atoi()函数是将字符串转化成对应整型数。