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),从这一点就能看出, ...
随机推荐
- html 显示 pdf
html 显示 pdf文件四种方式: 1. <embed src="pdf/wobu.pdf" type="application/pdf" width= ...
- 关于Svn服务总是链接异常
之前一直在使用,本机电脑也没有修改网络环境却一直无法链接svn. 每次剪切代码都提示: ping服务ip可以ping通,域名却总是不通. 百度结果各种clear缓存,还不行 结果使用 在本地C:\Wi ...
- 字符串格式连接sqlserver数据库的字段概念解释
以连接sqlserver数据库举例说明如:“Provider=SQLOLEDB.1;Password=******;Persist Security Info=True;User ID=sa;Init ...
- 【转载】C#通过IndexOf方法获取某一列在DataTable中的索引位置
在C#中的Datatable数据变量的操作过程中,有时候需要知道某一个列名在DataTable中的索引位置信息,此时可以通过DataTable变量的Columns属性来获取到所有的列信息,然后通过Co ...
- javaScript 一些小技巧
日历 创建过去七天的数组,如果将代码中的减号换成加号,你将得到未来7天的数组集合 // 创建过去七天的数组 [...Array(7).keys()].map(days => new Date(D ...
- vue 实现滚动到页面底部开始加载更多
直接上代码: <template> <div class="newsList"> <div v-for="(items, index) in ...
- 49.react中使用less
1.安装less:npm install less less-loader --save 2.webpack.config.js中配置: oneOf: [ { test: /\.less$/, ...
- linux系统crontab
一.cron 简介 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cro ...
- 15 Android系统安全(简要)
Android的用户和第三方软件,Android组件和数据安全 手机root后的问题:1.系统不稳定,2.病毒入侵,3.数据泄露 Root原理: Root分两类:1.临时root,2.永久root R ...
- kbmmw 中使用带验证的REST 服务
前面介绍的rest 服务,虽然很方便,但是存在任何人都可以访问的安全问题. 今天说一下,如何在kbmmw 中使用带验证的REST 服务? 首先我们在工程中放一个 认证控件TkbmMWAuthoriza ...