这是我第一次使用 mmap 系统调用。我收到无效参数错误,我不明白为什么,显然我遗漏了一些东西,请帮助我,谢谢
#include <stdio.h>
#include <sys/mman.h>
int main() {
long pageSize = getpagesize () ;
size_t length = 4096 ;
int * map = (int * ) mmap ( 0 , length , PROT_READ | PROT_WRITE , MAP_ANONYMOUS , 0 , 0 ) ;
if ( map == MAP_FAILED ) {
perror ( " error mapping " ) ;
}
return 0 ;
}
Run Code Online (Sandbox Code Playgroud)
您需要在标志中至少指定MAP_PRIVATE或MAP_SHARED之一。此外,正如另一个答案所说,您应该将 -1 作为可移植性的文件描述符,但这不是您的问题所在(因为您用 linux 标记了这个问题,而 linux 忽略了匿名映射的文件描述符)。