zoukankan      html  css  js  c++  java
  • Linux中的文件

    一般情况下,每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘 ..)被格式化为文件系统后,都会有两部份,一部份是iNode,另一部份是Block。Block是用来存储数据用的,而iNode就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。

    在 Linux 中的文件系统中,文件 = N(N>=1)个 inode + M(M>=1)个数据块。

    数据块,存放文件的内容数据,数据块的数目根据文件内容的大小而定。

    inode 称为信息节点、索引节点、i 节点。其作用有二:

    1、存储跟文件相关的属性信息,如修改时间、所有者、文件类型和文件长度,注意这些信息里并没有文件名;

    2、存储指向文件内容数据块的指针信息。

    在一个文件系统中,一个 inode 代表一个文件,并使用一个整数值来标志该 inode,称为 inode-number,该值对于一个文件系统而言是唯一的,即通过该值可以找到其对应的 inode。一般情况下,一个文件只有一个 inode 信息用来描述它。

    综上所述,假设 Linux 系统中有一个文件 a,则该文件在文件系统层面上,可以抽象表示为下图(超级块描述文件系统本身的信息):

    下面通过一个程序来获取某个文件的inode信息:

    /*
    *    文件名:filstat.c
    *    描述:    打印指定文件名的inode信息
    */
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #include<sys/types.h>
    #include<sys/stat.h>
    #include<unistd.h>
    
    struct stat file_stat;
    
    void print_file_stat(struct stat *fs)
    {
        printf(">>>>>>>>>>>>>>>>>>>>>>>
    ");
        printf("inode: 				%ld
    ",fs->st_ino);
        printf("protection : 			%o
    ",fs->st_mode);
        printf("number of hard links: 		%lu
    ",fs->st_nlink);
        printf("user ID of owner : 		%d
    ",fs->st_uid);
        printf("group ID of owner : 		%d
    ",fs->st_gid);
        printf("file size in bytes: 		%ld
    ",fs->st_size);
        printf("time of last access : 		%s",ctime(&fs->st_atime));
        printf("time of last modification: 	%s",ctime(&fs->st_mtime));
        printf("time of last change: 		%s",ctime(&fs->st_ctime));
    
    }
    
    int main(int argc, char *argv[])
    {
        if( 2 != argc)
        {
            fprintf(stderr,"Usage: %s filename...
    ",argv[0]);
            exit(-1);
        }
    
        if (0 != stat(argv[1], &file_stat))
        {
            perror("stat");
            exit(-1);
        }
    
        print_file_stat(&file_stat);
        return 0;
    }

    运行结果:

  • 相关阅读:
    DOS常用命令
    SQL查询优化:详解SQL Server非聚集索引(转载)
    SQLServer索引
    SQL注入技术专题—由浅入深【精华聚合贴】
    DVWA 1.9 通关秘籍
    高手养成计划基础篇-Linux第二季
    【摩斯电码】我是如何通过一张小纸条渗透进了妹子的心
    阿里旗下蚂蚁金服副总:有望3-5年内消灭伪基站
    【病毒分析】对一个vbs脚本病毒的分析
    【安全热点】阿里巴巴月饼门,观点两极化,孰对孰错?
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11793302.html
Copyright © 2011-2022 走看看