此文章是对Linux基础知识的简单记录,方便以后回顾,所记的知识点不是系统性的记录,整理的不足之处会实时修改。

1.文件操作分类

       文件操作可分为带缓冲区和不带缓冲区的文件操作,带缓冲区的文件操作快,可移植性强。
        不带缓冲区的文件操作: 属于低级文件操作,需要用户在自己的程序中为每个文件设置缓冲区。遵循POSIX标准的系统I/O试用的就是不带缓冲区的文件操作,系统I/O接口也称为I/O系统调用,如open、read、write和lseek等。
        带缓冲区的文件操作: 属于高级文件操作,系统将在用户空间中自动为正在使用的文件开辟内存缓冲区。遵循ANSI标准的I/O操作使用的就是带缓冲区的文件操作,标准I/O接口也称为I/O库函数,如fopen、fread、fwrite、flush和fseek等。

       系统调用和库函数的本质区别:调用系统调用会陷入Linux内核,调用库函数不会陷入Linux内核。
       系统调用是为了方便使用操作系统的接口,而库函数则是为了人们编程的方便。

2.Linux目录树

Linux文件及目录学习笔记
       /bin:用于存放普通用户可执行的命令,系统中的任何用户都可以执行该目录中的命令,如ls、cp、mkdir。
       /boot:Linux内核及启动系统时所需要的的文件,为保证启动文件更加安全可靠,通常把该目录存放在独立的分区上。
       /dev:设备文件的存储目录,如磁盘、光盘等。
       /etc:用于存放系统的配置文件,比如用户账号及密码存放在配置文件/etc/password和/etc/shadow中。
       /home:普通用户的主目录,每个用户在该目录下都有一个与用同名的目录。
       /lib:用于存放各种库文件。
       /proc:该目录是一个虚拟文件系统,只有在系统运行时才存在。通过访问该目录下的文件,可以获取系统状态信息并且修改某些系统的配置信息。可以使用cat、strings命令来查看这些信息,如在Shell下输入cat/proc/meminfo命令可以获取系统内存的使用情况,输入man proc命令获取关于proc的详细信息。
       /root:超级用户root的主目录。
       /sbin:存放的是用于管理系统的命令。
       /tmp:存放的是临时文件。
       /usr:用于存放系统应用程序及相关文件,如说明文档、帮助文档等。
       /var:用于存放系统中经常变化的文件,如日志文件、用户文件等。

3.文件访问权限

       Linux有三种不同类型的用户可对文件或目录进行访问,分别是:文件所有者,同组用户、其他用户。

       例:文件类型+访问权限              drwxr-xr-x
       文件类型+访问权限共由10位构成,第一位表示文件类型。文件类型缩写汇总说明如下:
       -(regular):普通文件。
       d(directory):目录文件。
       c(character):字符设备文件。
       b(block):块设备文件。
       p(pipe):管道文件(命名管道)。
       s(socket):套接字文件。
       l(link):链接文件(软链接即符号链接)。
       剩下9位表示文件的访问权限。按照每3位为一组分为三组,第一组表示文件所有者对该文件的操作权限;第二组表示与文件所有者同组(group)的用户对该文件的操作权限;第三组表示其他用户对该文件的操作权限。r表示读权限,w表示写权限,x表示可执行权限。

       文件访问权限的修改在Shell环境中可通过chmod命令来实现。如:chmod 666 test.c
       其中三个六分别表示所有者、所属组和其他用户具有的权限。每个6都是通过计算所得,r=4,w=2,x=1。6=4+2,所以数字6表示具有读和写权限,无可执行权限。

       文件类型与访问权限被定义在一个名为st_mode的内核数据结构中,st_mode实质上是一个无符号16位短整型数,文件类型和权限被编码在这个数中,如下图:
Linux文件及目录学习笔记
       其中低9位st_mode[0:8]一一对应代表了文件的各种用户权限,分为3组,对应3种用户,他们是文件所有者、同组用户和其他用户,r为读权限,w为写权限,x为执行权限。
       高4位即st_mode[12:15],用作文件类型,最多可以标识16种类型,目前已经使用了7个。

4.关于文件描述符

       文件描述符的取值范围在0~NR_OPEN(值为255)之间,即每个进程最多只能打开256个文件。
       当一个程序开始运行时,编号0、1、2的三个文件描述符已经默认打开,因此用户使用的文件描述符最小从3开始。文件描述符0代表标准输入文件,一般是键盘;文件描述符1代表标准输出文件,一般是显示器;文件描述符2代表标准错误输出文件,一般也值显示器。

相关文章:

  • 2021-11-06
  • 2022-02-13
  • 2022-12-23
  • 2021-12-19
  • 2021-07-14
  • 2021-05-27
  • 2021-05-14
  • 2022-12-23
猜你喜欢
  • 2022-03-10
  • 2022-02-03
  • 2021-07-24
  • 2021-08-17
  • 2021-07-15
  • 2021-06-25
相关资源
相似解决方案