`

创建一个具有空洞的文件

 
阅读更多
#include "apue.h"
#include <fcntl.h>

char buf1[]= "abcdefghij";
char buf2[]= "ABCDEFGHIJ";

int main(void)
{
	int fd;
		
	if((fd = creat("file.hole",FILE_MODE)) <0)
		err_sys("creat error");

	/* offset now 10 */
	if(write(fd,buf1,10) !=10)
		err_sys("buf1 write error");

	/* offset now 16384 */
	if(lseek(fd,16384,SEEK_SET) == -1)
		err_sys("lseek error");

	if(write(fd,buf2,10) != 10)
		err_sys("buf2 write error");
	/* offset now 16394 */

	exit(0);
}

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

        文件中的空洞并不要求在磁盘上占用存储区。具体处理方式与文件系统的实现有关,当定位到超出文件尾端之后写时,对于新写的数据需要分配磁盘块,但是对于原文件尾端和新开始写位置之间的部分则不需要分配磁盘块。

分享到:
评论

相关推荐

    使用vi命令创建一个脚本文件

    "使用vi命令创建一个脚本文件" 本文旨在详细介绍使用vi命令创建一个脚本文件的过程。vi命令是一款功能强大且广泛使用的文本编辑器,它可以帮助我们快速创建和编辑文本文件。在本文中,我们将一步步地指导您如何使用...

    空洞文件代码

    以下是一个简单的C语言示例,演示如何创建一个空洞文件并填充部分内容: ```c #include #include #include #include #include int main() { int fd = open("empty_file", O_RDWR | O_CREAT, S_IRUSR | S_...

    创建及挂载文件

    /etc/fstab 文件是 Linux 中的一个重要文件,它记录了文件系统的挂载信息。我们可以通过编辑 /etc/fstab 文件来实现文件系统的自动挂载。 六、磁盘扫描工具 fsck fsck 是 Linux 中的一个磁盘扫描工具。它可以检查...

    PB读取已知文件创建时间、修改时间111.zip

    需要注意的是,Java并没有直接提供获取文件创建时间的方法,但通常`lastModified()`返回的时间戳可以作为创建时间的一个近似值,因为文件一旦创建,这个时间戳就被设置。 总结来说,无论是PowerBuilder还是Java,都...

    基于文件微过滤驱动的文件创建监控程序 - MzfFileMon

    文件创建监控是安全和审计领域中的一个重要功能,它可以帮助管理员了解系统中文件的动态变化。MzfFileMon程序通过微过滤驱动技术,能够在文件被创建时立即获取相关信息,如创建文件的进程、时间戳、文件路径等。这种...

    windows下批量创建文件

    1. **创建批处理脚本**:首先,我们需要创建一个`.bat`文件。右键点击桌面或任意文件夹,选择“新建” -&gt; “文本文档”,然后将文件扩展名改为`.bat`。例如,我们可以将其命名为`create_files.bat`。 2. **编写命令...

    修改windows文件创建时间工具

    这里我们将探讨一个使用C++语言开发的Windows工具,它允许用户修改文件和文件夹的创建时间、修改时间和访问时间。 首先,让我们理解这个工具的核心功能: 1. **创建时间修改**:文件的创建时间通常记录了文件首次...

    Windows系统自动批量创建文件.zip

    它包含了一个批处理脚本(Automatic-file-creation.bat)和一个可能用于记录创建时间戳的文件(20210408101852)。下面我们将深入探讨这个主题。 首先,批处理脚本(.bat文件)是基于DOS命令行环境的程序,它由一...

    bat文件、创建100个文件.bat、创建文件夹.bat、创建日期文件夹.bat、提取文件名.bat

    通过编写一个批处理文件,用户可以在几秒钟内创建数百个预先定义好的文件夹结构,而不是手动一个一个创建。 接着,创建日期文件夹的批处理文件则是基于当前日期来自动化创建文件夹。这种脚本对于那些需要根据日期来...

    Oracle密码文件的创建、使用和维护Oracle密码文件的创建、使用和维护Oracle密码文件的创建、使用和维护

    在创建数据库实例时,Oracle Instance Manager会自动创建一个与之对应的密码文件。此外,管理员也可以通过命令行工具ORAPWD.EXE手工创建密码文件,指定文件名、密码和最大用户数。 创建密码文件后,需要配置初始化...

    ArcGIS教程:创建特征

    * compute_covariance 是一个布尔值,用于指定是否计算协方差矩阵。 * sample_field 是样本字段名称。 例如,在 Python 脚本中,可以使用以下代码来创建特征文件: ``` import arcpy from arcpy import env from ...

    获取与修改文件创建、修改和访问时间

    修改这些时间戳可以使用`ctime()`, `utime()` 函数,其中`utime()`接受一个包含新时间戳的元组,可以设置mtime和atime,但不能修改birthtime,因为Windows API不支持。 **在Unix/Linux中:** 通过`stat()`函数可以...

    批处理实现新建一和文件同名文件夹并将该文件放到文件夹中

    根据给定的文件标题和描述,我们的目标是设计一个批处理脚本,用于在当前目录下为每个文件创建一个与该文件同名的文件夹,并将原文件移动到对应的文件夹内。这一过程主要涉及以下关键步骤: 1. **遍历当前目录下的...

    易语言修改文件创建时间

    // 假设我们要将文件创建时间设置为一个月前 .系统时间.年 = .系统时间.年 - (若.系统时间.月份 , 1, 0) // 如果当前是1月,年份减1 .系统时间.月份 = .系统时间.月份 - 1 // 月份减1 .系统时间.日 = 若.系统时间.日...

    使用Qt创建具有网页图标的Internet快捷方式

    因此,我们需要利用`QFile`和`QTextStream`来创建一个指向URL的Windows `.url`文件,这在Windows系统下相当于一个Internet快捷方式。 创建快捷方式的步骤如下: 1. **获取网页图标(favicon)**:首先,我们需要...

    C#动态创建文件并写入内容

    以下是一个简单的示例,展示了如何动态创建一个文件并写入文本内容: ```csharp using System; using System.IO; public class FileOperation { public static void CreateAndWriteToFile(string filePath, ...

    使用 Neper 创建一个输入文件并更新它以包含每个生成的颗粒的材料和部分

    这里包含一个示例 shell 文件 (neper_example.sh),可用于在 Neper 中创建具有以下功能的合成微结构: 具有 300 粒的单位体积 RVE。 由欧拉角定义的指定角度 从 Neper 提取信息输出 可以从 Neper 生成的文件“.tess...

    文件创建时间修改器修改windows文件创建时间

    本文将详细介绍如何使用“文件创建时间修改器”这一工具来修改Windows文件的创建时间,并探讨相关的知识点。 首先,我们要理解文件的元数据。元数据是关于数据的数据,它包括文件的名称、大小、类型、创建时间、...

    更改文件属性工具(创建、修改时间、作者等)

    例如,如果你正在整理一个项目的历史记录,可能需要将所有相关文件的创建时间调整到项目开始的日期,这样可以更清晰地展示时间线。或者,如果你需要隐藏文件的实际修改历史,也可以通过改变修改时间来实现。至于作者...

    SQL_Server2000“以前的某个程序安装已在安装计算机上创建挂起的文件操作。安装程序前必须重新启动计算机”.doc

    “以前的某个程序安装已在安装计算机上创建挂起的文件操作。安装程序前必须重新启动计算机”,安装数据库2000时有这个提示,如何解决呢,请看此文档

Global site tag (gtag.js) - Google Analytics