0
我找到了一些答案,但它們都只在Linux上工作。但是MacOS怎麼樣?我的代碼在Ubuntu上沒問題,所以我不需要粘貼它們。謝謝! -------------------------------------------- 修改並粘貼我的碼。在OSX上使用mmap()時得到'無法分配內存'錯誤10.12
void unix_error(char* msg)
{
fprintf(stderr, "%s: %s\n", msg, strerror(errno));
exit(0);
}
void* Mmap(void* start, size_t length, int prot, int flags, int fd, off_t offset)
{
void* ptr;
if((ptr = mmap(start, length, prot, flags , fd, offset)) == ((void*)-1)){
unix_error("mmap");
}
return ptr;
}
int main
{
char *homepath = getenv("HOME");
char *file = "/Desktop/main.c";
strcat(homepath, file);
printf("%s\n", homepath);
int fd = open_file(homepath);
printf("%d\n", fd);
char *ptr = Mmap(NULL, filesize, PROT_READ, MAP_PRIVATE, fd, 0);
write(1, ptr, filesize);
}
得到錯誤:
/Users/<username>/Desktop/main.c
3
mmap: Cannot allocate memory
請顯示您的代碼,以便我們可以看到您要做的事情。添加了代碼 – STLDeveloper
@ STL開發人員 – wind2412
這顯然不是製作此消息的代碼。請向我們展示覆制問題所需的所有代碼。 – fuz