Unix - 文件中构成一个空洞的分析

lseek函数显示地为一个打开文件设置偏移量,文件偏移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将加长该文件,并在文件中构成一个空洞,这一点是允许的。位于文件中但没有写过的字节都被读为0。

eg:

holeFile.c函数创建了一个具有空洞的文件,运行观察:

可以看到,文件中的30个未写入字节都被设置读为0。每一行开始的一个7位数是以八进制形式表示的字节偏移量。

将刚创建的文件与同样长度但舞空洞的文件进行比较

虽然两个文件的长度相同,但无空洞文件占用了20个磁盘块,而具有空洞的文件只占用了8个磁盘块。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-08 22:37:44

Unix - 文件中构成一个空洞的分析的相关文章

Unix - 文件里构成一个空洞的分析

lseek函数显示地为一个打开文件设置偏移量,文件偏移量能够大于文件的当前长度,在这样的情况下.对该文件的下一次写将加长该文件.并在文件里构成一个空洞,这一点是同意的. 位于文件里但没有写过的字节都被读为0. eg: holeFile.c函数创建了一个具有空洞的文件,执行观察: 能够看到,文件里的30个未写入字节都被设置读为0.每一行開始的一个7位数是以八进制形式表示的字节偏移量. 将刚创建的文件与相同长度但舞空洞的文件进行比較 尽管两个文件的长度同样,但无空洞文件占用了20个磁盘块,而具有空洞

在PE文件中插入一个新节

这篇文章写如何在exe文件中插入一个新节,并且让它还能继续运行.这个节里保存的是导入表信息,指向一个自己写的动态库.在PE头中修改导入表地址位自己新构建的导入表. 能够实现这些需要对PE文件结构有着熟悉的掌握,可参考<Windows PE权威指南>.当初我看这本书的时候觉得很枯燥,结构信息不太好记.但是经过这个项目和一个自己实现LoadLibrary函数的项目后对PE文件结构就有了较熟悉的掌握. 首先,通过内存映射将目标EXE文件映射到内存中,保存原始结构,然后将原来的PE头部写入新文件. 之

java如何在文件中读取一个字符串并创建以这个字符为名字的类的对象

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">我们一般用properties或者XML文件作为资源存储的文件,现在主要介绍一下对properties的操作</span> 1.我们在src文件下新建一个名称为config的包 2.在config下新建一个file,把它命名为demo.properties 3. 把下面的几段

比较两个文件中,一个文件比另一个文件多的行

1. 该脚本用来比较两个文件中,其中一个文件比另一个文件多的行,常用来工作环境中,对比得出多余的ip地址 #!/bin/bash #different in file1 and file2 #author:vaedit #date:2017/8/20 #read -p "请输入第一个文件路径" file1 #read -p "请输入第二个文件路径" file2 function print_help(){ echo "该脚本只用来对比一个文件比另一个文件多

40亿个有序不同的数的文件中找一个缺失的数

编程珠玑第二题... 如果是用位图的话... 如果内存不够,那么就需要二分,注意思想就是先找到中间数mid,然后把文件以mid分为两个文件,肯定丢失的数在数目小的那个文件中,然后递归去那个小的文件中找就行了. 复杂度是o(2n)  n+n/2+n/4+n/8+..... 看了别人写了一个代码: int split(int* a, int* b, int*c, int alen, int bit) { int biter, citer, i; int v=0, re = 0, *t; while(

向PE文件中添加一个Section

背景 之前说过直接向类HelloWorld.exe的可执行文件添加一个MessageBox弹窗, 但有时候, 需要添加的内容太多了, 因为数据与代码一起插入, 以至于可执行文件本身没有足够的空闲空间存放这些内容时, 就需要添加一个Section. 确认节区头后面还有空间 用工具查看一下最后一个节区头后面是否还有多余的空间, 一般情况都会有的. 但若没有的话, 就要移动节区头后面的文件内容, 这个比较复杂, 在这里不说. 一般会结合PE View 和 WinHex 这两个工具, 如之前的Hello

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

contex指上下文,实际上就是一个web项目:path是虚拟目录,访问的时候用127.0.0.1:8080/welcom/*.jsp访问网页,welcome前面要加/;docBase是网页实际存放位置的根目录,映射为path虚拟目录:reloadable="true"表示你修改了jsp文件后不需要重启就可以实现显示的同步.

安装kali 开机登陆 Ping 主机可达 Ctrl+c键来强行终止 ifconfig 查看网络状态 创建一个用户,并将其纳入root组,然后将用户删除 创建用户, 创建文件夹,文件夹中创建一些文件,将文件夹打包,最后解包到另一个文件中 创建一个文件。

安装linus操作系统 直接按回车确定 Live(amd64),就可以直接自动安装进入操作系统 安装完成后,进入界面. 创建用户zfh,密码123456 将用户zfh删除 利用ifconfig查看网络状态 创建zfh17文件夹,在文件夹里面创建17.txt,和18.txt. 利用rm,删除17.txt 利用ps-ef显示进程 查看磁盘容量 显示目录中所有文件的大小 在zfh200里面创建两个文件夹zfh201和zfh202,将zfh201压缩到zfh202中 解压缩 windows操作系统命令使

java 文件中 定义一个字符串,它的默认编码是什么?

.java 文件的编码就是 String 字符串的编码 File 文件的编码就是 文件内容的编码 request 的设置的编码就是inputstream 的编码 jvm 的默认编码(the default charset of this Java virtual machine)为: import java.nio.charset.Charset; Charset.defaultCharset(); @Test public void charsetTest() { String s0 = "汉