linux系统设计的核心理念在于文件。
文件包含两方面的内容,一是文件本身所储存的数据,二是文件的属性,包括文件的访问权限、所有者、文件大小、创建日期等。
从左到右依次是文件属性(目录也是文件),文件数量(子目录数),所有者,用户组,文件大小,文件创建时间,文件名。
linux中文件类型:
①普通文件(regular file):最常见的类型,至于是文本还是二进制,对内核并无区别。第一个属性是-
②目录文件:第一个属性是d
③字符特殊文件(character special file):字符类型设备,比如键盘,鼠标等。我猜显示器,打印机也应该属于这个。
④块特殊文件(block special file):块类型设备,如硬盘光驱等,第一个属性是b
⑤FIFO:用于进程间通信,也称为管道,第一个属性是p
⑥套接字(socket):网络通信,第一个属性是s
⑦ 符号连接(symbolic link):指向另一个文件,是另一个文件的引用。第一个属性是l
/bin目录 : 用于存放普通用户可执行的命令,如ls,cp等
/boot目录: 内核及启动系统所需要的文件。
/cdrom 目录: 光驱设备
/dev 目录: 设备文件
/etc 目录: 存放系统配置文件。
/home 目录: 普通用户主目录,每个用户在该目录下有一个与用户同名的目录
/lib : 存放各种库文件
/sbin: 系统管理命令
/tmp: 存放临时文件
/mnt : 本意是挂载目录,不过这里面/hgfs是虚拟机跟主机共享通信的目录,事实上直接拖拽文件进出虚拟机即可。
/proc: 虚拟文件系统,只有在系统运行时才存在。
打开文件open
文件描述符: 所有执行I/O操作的系统调用都以文件描述符(非负整数)来指代打开的文件,为int型
open(pathname,flags,mode),返回值即为文件描述符。
如果文件不存在,open创建它。 flags参数指定打开方式:只读,只写或是读写。
mode参数则指定了这个创建后的文件的访问权限。
O_RDONLY :以只读方式打开
O_WRONLY: 以只写方式打开
O_RDWR : 可读可写
open函数有两个不同的实现,一个是忽略掉mode参数。
当且仅当第二个参数使用了O_CREAT时(文件不存在需要创建),才需要第三个参数mode
继续查找手册:“如果成功调用,返回的文件描述符是最低编号的数字(最小是零),而不是当前打开的那个进程”
还包含了3个头文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>
mode参数:
标志 | 含义 |
---|