【发布时间】:2016-04-29 10:06:26
【问题描述】:
我正在像这样在 c 中创建一个文件:
int fd;
fd = open(filename, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
if (fd == -1) {
return NULL;
}
lseek(fd, filesize + 1, SEEK_SET);
write(fd, "", 1);
lseek(fd, 0, SEEK_SET);
void* file_memory = mmap(0, filesize, PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
所以,正如我所说,我创建文件并在将其映射到内存之前对其进行填充。
当我查看文件系统中的文件时,它给了我 1026 字节的文件大小(文件中的简单 ls -l)
稍后我想从一个简单且听起来像这样的节点应用程序访问该文件:
fs.open(filename, 'w', function (err, fd) { ... }
当这一行被执行时,文件大小被设置为 0(同样是一个简单的 ls -l)。
我假设该文件已被重新创建?但这不应该发生,因为该文件已经存在(根据 node.js 手册)。
这里发生了什么?我做错了什么?
【问题讨论】:
标签: javascript c node.js file mmap