C 使用mmap会导致无效参数错误

C 使用mmap会导致无效参数错误,c,C,我正在用c处理mmap,我遇到了一个非常奇怪的错误。当我运行以下代码块() /*文件描述符*/ int-fd; /*有关该文件的信息*/ 结构统计; 智力状态; 大小; /*要打开的文件名*/ const char*file_name=“myfile.txt”; /*记忆映射了事物本身*/ const void*已映射; int i; /*打开文件进行读取*/ fd=打开(“myfile.txt”,仅限ordu); 检查(fd

我正在用c处理mmap,我遇到了一个非常奇怪的错误。当我运行以下代码块()

/*文件描述符*/
int-fd;
/*有关该文件的信息*/
结构统计;
智力状态;
大小;
/*要打开的文件名*/
const char*file_name=“myfile.txt”;
/*记忆映射了事物本身*/
const void*已映射;
int i;
/*打开文件进行读取*/
fd=打开(“myfile.txt”,仅限ordu);
检查(fd<0,“打开%s失败:%s”,文件名,strerror(errno));
/*获取文件的大小*/
状态=fstat(fd和s);
检查(状态<0,“统计%s失败:%s”,文件名,strerror(errno));
尺寸=标准尺寸;
/*内存映射文件*/
映射=mmap(0,大小,保护读取,映射共享,fd,0);
检查(映射==MAP\u失败,“mmap%s失败:%s”,
文件名,strerror(errno));
我遇到了一个无效的参数错误

我的研究使我得出结论,这是一个抵消问题,但我完全不知道我能做些什么来解决它。如有任何建议,将不胜感激


谢谢

我决定尝试在另一台机器上运行此代码,它运行得很好,这似乎是机器方面的问题,而不是代码中的问题。至少现在我知道代码没有被破坏:)

你试过使用
MAP\u PRIVATE
而不是
MAP\u SHARED
吗?我试过了,错误仍然存在
/* The file descriptor. */
int fd;
/* Information about the file. */
struct stat s;
int status;
size_t size;
/* The file name to open. */
const char * file_name = "myfile.txt";
/* The memory-mapped thing itself. */
const void * mapped;
int i;

/* Open the file for reading. */
fd = open ("myfile.txt", O_RDONLY);
check (fd < 0, "open %s failed: %s", file_name, strerror (errno));

/* Get the size of the file. */
status = fstat (fd, & s);
check (status < 0, "stat %s failed: %s", file_name, strerror (errno));
size = s.st_size;

/* Memory-map the file. */
mapped = mmap (0, size, PROT_READ, MAP_SHARED, fd, 0);
check (mapped == MAP_FAILED, "mmap %s failed: %s",
       file_name, strerror (errno));