首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Linux中快速创建C中的大型文件?

如何在Linux中快速创建C中的大型文件?
EN

Stack Overflow用户
提问于 2020-05-09 10:29:24
回答 1查看 145关注 0票数 0

以下问题:How to quickly create large files in C?

我记得4-5年前,我能够在Linux中使用fallocate shell实用程序来创建没有漏洞/空白的文件。

磁盘文件系统要么是ext3、ext4,要么是xfs。

当时,fallocate shell实用程序在不到1秒的时间内创建了8GB的文件。我不记得文件是满是零还是随机。

我现在试着复制它,但它似乎创建了带有漏洞/空白的文件。

我想知道这是如何用C语言完成的?

  • 一些内核调用是Linux专用的?
  • ,一些规范中有错误的内核调用,后来修复了?
  • ,一些不再可用的内核调用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-09 12:16:39

Linux上的fallocate系统调用有一个选项可以使空间为零。

代码语言:javascript
复制
#define _GNU_SOURCE
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int fd = open("testfile", O_RDWR | O_TRUNC | O_CREAT, 0755);
    off_t size = 1024 * 1024 * 1024;

    if (fd == -1) {
        perror("open");
        exit(1);
    }

    if (fallocate(fd, FALLOC_FL_ZERO_RANGE, 0, size) == -1) {
        perror("fallocate");
        exit(1);
    }
}

请注意,并非所有文件系统都支持FALLOC_FL_ZERO_RANGEext4支持它。

否则,如果您正在寻找更可移植的解决方案(当然,这并不是那么有效),您可以自己编写零。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61695266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档