相关疑难解决方法(0)

在C中用零覆盖整个文件的最快方法是什么?

我需要做的是以最快的方式用零填充整个文件内容.我知道一些linux命令cp实际上得到了一次写入的最佳块大小信息,但是我无法弄清楚使用这个块大小信息是否足以具有良好的性能并且看起来像st_blksize来自stat()isn给我块大小.谢谢 !

评论的一些答案:

  1. 这需要在C中完成,而不是使用像shred这样的实用程序.

  2. 使用中没有错误 stat()

  3. st_blksize 返回一个大于文件大小的块,不知道我该如何处理.

  4. 使用truncate()/ ftruncate(),只有额外的空格用零填充,我需要覆盖整个文件数据.

我想的是:

fd = open("file.txt", O_WRONLY);
// check for errors (...)
while(TRUE)
{
    ret = write(fd, buffer, sizeof(buffer));
    if (ret == -1) break;
}
close(fd);
Run Code Online (Sandbox Code Playgroud)

问题是如何"以编程方式"定义最佳缓冲区大小.

c unix linux file-io file

4
推荐指数
1
解决办法
5964
查看次数

标签 统计

c ×1

file ×1

file-io ×1

linux ×1

unix ×1