如何将虚拟磁盘的内存设置为 0

  • 本文关键字:设置 内存 虚拟磁盘 c
  • 更新时间 :
  • 英文 :

static int fd;
int make_disk(char *name){
int cnt;
char buf[BLOCK_SIZE];
fd = open(name, O_WRONLY | O_CREAT | O_TRUNC, 0644);
memset(buf, 0, (BLOCK_SIZE * DISK_BLOCKS));
for(cnt = 0; cnt < BLOCK_SIZE; ++cnt){
write(fd, buf, DISK_BLOCKS);
}
close(fd);
return 0;
}

这是我的代码,我不知道为什么 memset 函数在这里不起作用。

这是我的代码,我不知道为什么 memset 函数在这里不起作用。

您有一个BLOCK_SIZE字节的数组,并且您正在尝试将该数组中的所有BLOCK_SIZE*DISK_BLOCKS个字节设置为 0。我假设DISK_BLOCKS大于 1,所以memset到达数组的末尾,然后继续前进,因为你告诉它这样做。

也许你想要 mmaped 文件

char *map = mmap(0, BLOCK_SIZE * DISK_BLOCKS, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

然后

memset(map, 0, (BLOCK_SIZE * DISK_BLOCKS));
msync(map, (BLOCK_SIZE * DISK_BLOCKS), MS_SYNC);

相关内容

  • 没有找到相关文章

最新更新