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. vue语法精简(方便开发查阅)

    vue语法精简(方便开发查阅) 指令 特殊的标签和属性 变异方法 事件修饰符 按键修饰符 表单修饰符 生命周期函数 计算属性 监听属性 子组件通过事件向父组件传递信息 在组件上使用v-model 动画 ...

  2. leetcode922

    public class Solution { public int[] SortArrayByParityII(int[] A) { var len = A.Length; ];//奇数1,3,5, ...

  3. 跟我学算法-图像识别之图像分类(上)(基础神经网络, 卷积神经网络(CNN), AlexNet,NIN, VGG)

    1.基础神经网络: 输入向量x,权重向量w, 偏置标量b, 激活函数sigmoid(增加非线性度) 优化手段: 梯度下降优化, BP向后传播(链式规则) 梯度下降优化: 1. 使用得目标函数是交叉熵  ...

  4. MySQL GTID (三)

    五.如何跳过一个GTID 环境见系列一 5.1 创建表,模拟数据 #主机上 create table t_test (id int primary key ,name varchar(10)); in ...

  5. JDK动态代理代码示例

    JDK动态代理代码示例 业务接口 实现了业务接口的业务类 实现了InvocationHandler接口的handler代理类 1.业务接口 package com.wzq.demo01; /** * ...

  6. java过滤关键词

    敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...

  7. LevelDB Version

    [LevelDB Version] Version 保存了当前磁盘以及内存中所有的文件信息,一般只有一个Version叫做"current" version(当前版本).Level ...

  8. 什么是UE、UI、UCD、UED?UE、UI、UCD、UED四者的区别(转)

    字面释义: UE (User Experience) : 用户体验 UI (User Interface) : 用户界面 UCD (User-Centered Design) :以用户为中心的设计 U ...

  9. docker1.9 network跨主机安装

    背景:在跨host中,如果docker任何一个重启或者销毁,docker暴露的端口以及ip将可能重新配置,这个时候需要重新记录ip跟端口.在生产环境中往往需要一个固定的ip以及端口去跟容器通信.例如m ...

  10. Cookie、Session、Token

    一.发展史 .最初.Web基本上就是文档的浏览而已,既然是浏览,作为服务器,不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议,就是请求加相应,尤其是我不用记住是谁刚刚发了H ...