gpt4 book ai didi

linux - 为什么有孔的文件比没有孔的文件具有更小的磁盘 block ?

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:42 24 4
gpt4 key购买 nike

#include <fcntl.h>
#include <unistd.h>

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

int
main(void)
{
int fd;

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

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

if (lseek(fd, 16380, SEEK_SET) == -1) { // offset now = 16380
err_sys("lseek error");
}

if (write(fd, buf2, 10) != 10) { // offset now = 16390
err_sys("buf2 write error");
}
close(fd);

if ((fd = open("file.hole", O_RDWR)) == -1) {
err_sys("failed to re-open file");
}

ssize_t n;
ssize_t m;
while ((n = read(fd, buf3, 10)) > 0) {
if ((m = write(STDOUT_FILENO, buf3, 10)) != 10) {
err_sys("stdout write error");
}
}

if (n == -1) {
err_sys("buf3 read error");
}
exit(0);
}

我是unix系统编程的新手

有带孔的打码文件。

输出结果为:

$ls -ls file.hole file.nohole
8 -rw-r--r-- 1 sar 16394 time file.hole
20 -rw-r--r-- 1 sar 16394 time file.nohole

为什么有洞的文件比没有洞的文件有更少的磁盘 block ?

在我看来,没有空洞的文件需要更小的磁盘 block

因为有孔的文件比没有孔的文件传播得更多..

来自“UNIX 环境高级编程 3rd-Stevens Rago,示例 3.2”

最佳答案

为什么你认为没有孔的文件占用的空间更小?这恰恰相反。如果文件有漏洞,则没有必要为该空间保留磁盘 block 。磁盘 block 的数量与文件的传播无关,而是与你在文件中写入的数据大小直接相关。

关于linux - 为什么有孔的文件比没有孔的文件具有更小的磁盘 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26775062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com