最初,我创建了一个空的“ .txt” 文件。然后,我尝试将一些字符串(例如“ HI”)复制到该< strong>“ .txt” 文件。但是我得到了 mmap:无效的参数。
因此,我将长度从(mystat.st_size = 0)增加到4096。即使我遇到错误。
./ a.out
mystat.st_size 0
总线错误(核心已转储)
为什么?
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
int main()
{
int fd;
void *ptr;
struct stat mystat;
/*opening a empty text file*/
fd = open("test.txt", O_RDWR);
if (fd == -1) {
perror("open");
return -1;
}
/*File size checking*/
if((fstat(fd, &mystat))<0)
{
perror("fstat");
close(fd);
return -1;
}
ptr = mmap(0, mystat.st_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
if (ptr == MAP_FAILED)
{
perror("mmap");
close(fd);
return -1;
}
strncpy(ptr, "Hi", 3);
close(fd);
return 0;
}
任何人都可以帮忙吗?