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(">>>>>>>>>>>>>>>>>>>>>>>\n");
printf("inode: \t\t\t\t%ld\n",fs->st_ino);
printf("protection : \t\t\t%o\n",fs->st_mode);
printf("number of hard links: \t\t%lu\n",fs->st_nlink);
printf("user ID of owner : \t\t%d\n",fs->st_uid);
printf("group ID of owner : \t\t%d\n",fs->st_gid);
printf("file size in bytes: \t\t%ld\n",fs->st_size);
printf("time of last access : \t\t%s",ctime(&fs->st_atime));
printf("time of last modification: \t%s",ctime(&fs->st_mtime));
printf("time of last change: \t\t%s",ctime(&fs->st_ctime)); } int main(int argc, char *argv[])
{
if( != argc)
{
fprintf(stderr,"Usage: %s filename...\n",argv[]);
exit(-);
} if ( != stat(argv[], &file_stat))
{
perror("stat");
exit(-);
} print_file_stat(&file_stat);
return ;
}
运行结果:

Linux中的文件的更多相关文章
- Linux中检索文件
1 , Use locate command It is a fast way to find the files location, but if a file just created ,it w ...
- Linux中查看文件编码
在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式.如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱 ...
- 在Linux中查看文件的编码及对文件进行编码转换
如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.下面介绍一下,在Li ...
- Linux中的文件描述符与打开文件之间的关系
Linux中的文件描述符与打开文件之间的关系 导读 内核(kernel)利用文件描述符(file descriptor)来访问文件.文件描述符是非负整数.打开现存文件或新建文件时,内核会返回一个文件描 ...
- 5 个在 Linux 中管理文件类型和系统时间的有用命令
对于想学习 Linux 的初学者来说要适应使用命令行或者终端可能非常困难.由于终端比图形用户界面程序更能帮助用户控制 Linux 系统,我们必须习惯在终端中运行命令.因此为了有效记忆 Linux 不同 ...
- Linux中一个文件10行内容,如何输出5-8内容到屏幕
题目是这样的,Linux中一个文件10行内容,如何输出5-8内容到屏幕首先我们模拟一下这样的环境: [root@localhost question]# pwd /root/question [roo ...
- [转帖]NotePad++编辑Linux中的文件
NotePad++编辑Linux中的文件 https://blog.csdn.net/chengqiuming/article/details/78882692 原作者 未经允许不允许转帖 加密自己参 ...
- linux中的文件编码及编码修改
查看文件编码 在Linux中查看文件编码可以通过以下几种方式: 1.在Vim中可以直接查看文件编码 :set fileencoding 即可显示文件编码格式. 如果你只是想查看其它编码格式的文件或者想 ...
- 工具WinSCP:windows和Linux中进行文件传输
工具WinSCP:windows和Linux中进行文件传输 2016-09-21 [转自]使用WinSCP软件在windows和Linux中进行文件传输 当我们的开发机是Windows,服务器是Lin ...
- 【转】linux中inittab文件详解
原文网址:http://www.2cto.com/os/201108/98426.html linux中inittab文件详解 init的进程号是1(ps -aux | less),从这一点就能看出, ...
随机推荐
- 完全图解 HTTPS
安全基础 我们先来看下数据在互联网上数据传递可能会出现的三个比较有代表性的问题,其实后面提到的所有方法,都是围绕解决这三个问题而提出来的. 窃听 伪造 否认 对称密钥加密 假设 A 正在通过互联网向 ...
- 服务发现对比:Zookeeper vs etcd vs Consul
我们拥有的服务越多,如果我们使用预定义的端口,就会发生冲突的可能性越大.毕竟,在同一端口上不能监听两个服务.管理一百个服务所使用的所有端口的紧密列表本身就是一项挑战.将那些服务所需的数据库添加到该列表 ...
- SpringMVC中的400错误,The request sent by the client was syntactically incorrect.
在其他对象属性类型一样情况下,只需要创建一个类,再在springmvc.xml中添加配置: package com.ujiuye.common; import org.springframework. ...
- Java自学-类和对象 单例模式
Java的饿汉式与懒汉式单例模式 LOL里有一个怪叫大龙GiantDragon,只有一只,所以该类,只能被实例化一次 步骤 1 : 单例模式 单例模式又叫做 Singleton模式,指的是一个类,在一 ...
- 36、v-charts一些基本配置修改
例如柱状图: <ve-histogram :settings="chartSettings" :extend="chartExtend" :grid=&q ...
- Cheat Engine 指针
打开游戏 扫描时间的流程就不多说了 扫描结果 寻找基地址 右击扫描到的地址,选择什么改写了这个地址 会弹出如下窗口 不用管这个窗口,去改变一下游戏时间,出现如下图 随便打开一个,找到了数据块地址和偏移 ...
- 转摘jemeter学习-连接数据库之jdbc请求
JMETER连接数据库 mysql下载地址:https://dev.mysql.com/downloads/connector/j/ mysql连接器根据语言选择/J,用的是Mac,选择下载.tar. ...
- scala快速入门之文档注释
scala快速入门之文档注释 1.在项目栏的目录树中找到该源码,右击点击Show in Explorer, 即可找到该源码的本地路径,在路径中输入cmd 2.执行scaladoc -d 生成文档注释 ...
- 阿里云ECS-使用putty产品psftp工具上传下载
本人windows10,安装了winscp3,原本可以简单易用,但天空不作美,死活不让我连接,无奈,只能换命令行方式, 好在,putty提供了一个小工具,psftp,不过,需要去官网下载完整版才有哦, ...
- jenkins与gitlab集成,分支提交代码后自动构建任务(六)
一.在gitlab中创建token 复制token,此token只显示一次:6SB8y4jt31NnYG5-nWoi 二.在gitlab上为项目创建trunk分支 三.在jenkins中配置gitla ...