如何解决mmap失败并出现意外错误EPERM1

问题描述

当我运行以下程序时,我得到mmap()失败,并显示EPERM错误。我预期的O / P是EOPNOTSUPP错误,因为LEGACY_MAP_MASK标志之​​外的任何标志都会因EOPNOTSUPP而失败。

#define TEST_FILE "file_to_mmap"
#define TEST_FILE_SIZE 1024
#define TEST_FILE_MODE 0600

unsigned long  legacy_flags;
unsigned long  map_flags;

int fd_file;
void *mapped_address;

fd_file = open(TEST_FILE,O_CREAT | O_RDWR,TEST_FILE_MODE);
legacy_flags = LEGACY_MAP_MASK;
map_flags = ~(legacy_flags) + MAP_SHARED_VALIDATE;
mapped_address = mmap(NULL,TEST_FILE_SIZE,PROT_READ | PROT_WRITE,map_flags,fd_file,0);
if (errno == EOPNOTSUPP)
   printf("Have a nice day");

错误

mmap( ) Failed with the unexpected error: EPERM (1)

uname -a:O / P:

Linux debian 4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64 GNU/Linux

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)