Linux的文件编程

linux文件管理系统分为3部分
:与文件管理有关的软件,被管理的文件,实施文件管理需要的数据结构

用C语言建立,打开,关闭文件,向文件写入和读出数据等。



Linux文件系统简介

    从系统角度看
:文件系统是对文件存储空间进行组织和分配,负责文件存储,并对存入的文件进行保护和检索的系统。负责为用户建立文件,存入,读出,修改,转存,控制文件的存取,当用户不再使用时撤销文件等操作。

    linux文件系统基础

        linux目录树文件结构。linux中,所有的内容都被看成文件,包括硬件和目录。所有的操作都可以归结为对文件的操作,linux可以像操作普通文件一样来对磁盘文件,串口,键盘,显示器,打印机及其他的设备进行操作。

    bin:存放系统启动时需要的执行文件和一些用户常用的命令,例如cp,ls,cat等。

    boot:存放系统内核以及启动管理器,类似:grub

    cdrom:Ubuntu系统安装光盘镜像的挂在位置,这个目录根据用户的实际情况而存在,有些系统中可能没有。

    dev:设备文件目录,在其中存放了相应的设备信息。

    etc:存放相应的系统配置文件。

    home:用户主目录,在其中按照用户名存放了当前系统中存在用户的个人文件和信息,儡兮Windows中“我的文档”。

    lib:存放着系统最基本的动态链接共享库,其作用类似于Windows中的.dll文件。    

    lib64:这是lib目录的64位版本,当使用64位的操作系统时会存在这个目录,并且将对应的64位库函数存放在这里。

    lost+found:存放在文件系统修复时恢复的文件。

    media:用于存放Ubuntu系统加载的各种媒体,例如光盘,软盘等。

    mnt:用户临时挂载其他的文件系统,如挂载U盘,CDROM等。

    opt:用于存放安装时“可选”的程序,例如KDE,Gnome等。

    proc:系统内存的映射虚拟目录,可以通过直接访问这个目录来获取系统信息,他存在于内存中,而不是硬盘上。

    root:root用户的主工作目录,类似home。

    run:存放的是自系统启动以来描述信息的文件,某些类似Linux中这个目录可能位于var下。

    sbin:存放系统级的可执行文件,类似bin,但是这些文件只能供root用户访问,而不能供普通用户访问。

    selinux:存放提供强制访问控制的相应文件,在某些linux中可能不存在。

    srv:存放提供一些特定服务的文件。

    sys:存放系统信息相关文件。

    temp:存放临时文件。

    usr:存放普通用户的应用程序,文档,程序等。

    var:存放在时间,大小,内容上会经常变化的文件。

    注:Linux是主动管理文件,Windows是自己管理文件。

    linux文件系统由4部分组成:引导块,超级块,索引节点表,数据块。

    引导块:用于存放文件系统的引导程序,引导程序用于系统引导或启动操作系统,如果一个文件系统不存放操作系统,其引导块将为空。

    超级块:用来描述该文件系统管理的资源,其包含空闲索引节点表和空闲数据块表,用于具体说明文件系统的资源使用情况。

    索引节点表:用来存储文件的控制信息,每个节点对应一个文件。

    数据块:是磁盘上存放数据块的磁盘块,包括目录文件和数据。

    ***超级块***

    用于描述Linux文件系统的资源状态,包括文件系统的大小,空闲单元位置信息等。由以下字段构成:

    1.文件系统的容量信息,如:inode数目,数据块数目,保留块数目和块的大小等。

    2.文件系统中空闲块的数目。

    3.文件系统中部分可用的空闲块表。

    4.空闲块表中下一个空闲块号。

    5.索引节点表的大小。

    6.文件系统中空闲索引节点表

    7.空闲索引节点表中下一个空闲索引节点号

    8.超级块的锁字段,用于保证对存储单元的互斥操作

    9.空闲块表的锁字段和空闲索引节点的锁字段

    10.超级块是否被修改的标志

    11.其他字段,存放了文件系统是否完整的标志

    注:Linux关机时候要先将缓冲区数据写回文件系统,并且卸载该文件系统,如果没有卸载文件系统就关机,则很可能导致数据丢失。Linux启动的时候,在挂接(mount)一个文件系统之前首先会检查其超级块中的相应字段,如果上次没有进行卸载操作,则需要对该文件系统的完整性进行检查(fsck)。

    ********索引节点表********

    文件信息是由索引节点表来给出的,每个文件都有自己的索引节点表,在之中包含了该文件数据在磁盘上存储的位置信息,操作权限,文件所有者,操作时间等信息。索引节点表平时存储在磁盘上,在需要进行操作的时候读入内存,通常,存储在磁盘上的索引节点表称作磁盘索引节点,内存中的映像称作内存索引节点表。

    1.文件类型:普通文件,目录文件,链接文件,设备文件,管道文件等。

    2.文件链接数:记录了引用该文件的目录表项数,即记录了有多少个文件名指向该文件。

    3.文件属主标识:指出该文件的所有者ID

    4.文件属主的组标识:指出该文件所有者属组的ID

    5.文件的访问权限:系统将用户分为文件属主,同组用户和其他用户三类,每类用户可能获得对文件的一种或几种访问权限,目录文件的执行权限是指修改目录的权利。

    6.文件的存取时间:包括文件最后一次被修改的时间,最后一次被访问的时间和最后一次修改索引点的时间

    7.文件的长度:以字节表示的文件长度

    8.文件的数据块指针:文件操作的当前位置指针。

    文件描述符是Linux用于标识一个特定进程正在访问的文件,当打开一个文件或者创建一个文件,系统将返回一个文件描述符供其他操作引用,他可以用来标识其对应的特定文件。在Linux中,每个进程都可以拥有最多1024个文件描述符,并且有自己的文件描述符表,其中对于一般的进程是固定的,并且一般进程是固定的,并且是由系统自动打开的:0--标准输入文件,通常是键盘     1---标准输出文件,通常是显示屏   2----标准错误输出,一般也是屏幕

     Linux文件类型介绍

    -:普通文件,对应S_ISEEG()    l:链接文件,对应S_ISLNK()    

    c:字符设备文件,对应S_ISCHR()    s:套接字文件,对应S_ISSOCK()

    d:目录文件,对应S_SDIR()    b:块设备文件,对应S_ISBLK()

    p:管道文件,对应S_ISFIFO()

10-09 Linux的文件系统介绍以及各种设备的说明的更多相关文章

  1. Linux根文件系统介绍

    系统 根文件系统首先是一种文件系统,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后 ...

  2. Linux文件系统介绍(转)

    文章转自:http://www.iteye.com/topic/816268 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文 ...

  3. Linux 文件系统介绍

    目录 1.Linux 分区简介 2.文件的类型 3.文件的属性与权限 4.直达底部 一.Linux 分区简介 与 windows 通过 盘符管理各个分区不同,Linux把所有设备和文件都当作文件来管理 ...

  4. 10.17 linux 文件权限

    文件权限模拟练习 [root@wen ~]# groupadd incahome[root@wen ~]# usersdd oldboy -g incahome-bash: usersdd: comm ...

  5. 『学了就忘』Linux文件系统管理 — 57、Linux文件系统介绍

    目录 1.了解硬盘结构(了解即可) (1)硬盘的逻辑结构 (2)硬盘接口 2.Linux文件系统介绍 (1)Linux文件系统的特性 (2)Linux常见文件系统 3.整理一下对文件系统的认识 在了解 ...

  6. linux中文件的三种time(atime,mtime,ctime)

    linux下文件有3个时间的,分别是atime,mtime,ctime.有些博友对这3个时间还是比较迷茫和困惑的,我整理了下,写下来希望对博友们有所帮助. 1 这三个time的含义 简名 全名 中文名 ...

  7. linux:文件及文件夹管理

    http://blog.csdn.net/pipisorry/article/details/39854265 查看用户的信息 pika:~$id pikauid=1000(pika) gid=100 ...

  8. 【转】第六章、Linux 的文件权限与目录配置

    原文网址:http://vbird.dic.ksu.edu.tw/linux_basic/0210filepermission.php 最近更新日期:2009/08/18 Linux最优秀的地方之一, ...

  9. 【Linux】- 文件基本属性

    Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 在Linux中我们可 ...

随机推荐

  1. 【DataGuard】部署Data Guard相关参数详解 (转载)

    原文地址:[DataGuard]部署Data Guard相关参数详解 作者:secooler    有关物理Data Guard部署参考<[DataGuard]同一台主机实现物理Data Gua ...

  2. Python普通方法、静态方法、类方法

    开始 # -*-coding:utf-8-*- # 普通方法,类方法,静态方法的区别 __metaclass__ = type class Tst: name = 'tst' data = 'this ...

  3. java 文件指针复位

    BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream("userremain.l ...

  4. 跟我学算法-tensorflow 实现卷积神经网络

    我们采用的卷积神经网络是两层卷积层,两层池化层和两层全连接层 我们使用的数据是mnist数据,数据训练集的数据是50000*28*28*1 因为是黑白照片,所以通道数是1 第一次卷积采用64个filt ...

  5. How to run eclipse in clean mode? and what happens if we do so?

    What it does: if set to "true", any cached data used by the OSGi framework and eclipse run ...

  6. Unity XLua 官方案例学习

    1. Helloworld using UnityEngine; using XLua; public class Helloworld : MonoBehaviour { // Use this f ...

  7. WebFont-前端字体

    WebFont-前端字体 前端设计时使用了一些不常用的字体,如何在客户的浏览器中正确展示? 解决方案是使用webfont,将字体置于服务端,利用 css 中的font-family进行设置,客户端展现 ...

  8. Create a Basic Shader in Shader Forge

    [Create a Basic Shader in Shader Forge] 1.打开ShaderForge.Window-> Shader Forge.(打开速度较慢) 2.通过NewSha ...

  9. Rigidbody中 Angular Drag (角阻力):

    Rigidbody中 Angular Drag  (角阻力):同样指的是空气阻力,只不过是用来阻碍物体旋转的.如果设置成无限的话,物体会立即停止旋转.如果设置成0,物体在上升过程中,会发生侧翻旋转. ...

  10. 从YouTube改版看“移动优先”——8个移动优先网站设计案例赏析

    2011年,Luke Wroblewski大神提出了移动优先的设计理念.在当时看来这无疑是一个打破行业常规的新型设计原则.而在移动互联网大行其道的今天,谁遵守移动优先的设计理念,设计出最好的移动端网站 ...