我無法獲得mmap函數的工作。它返回EINVAL錯誤代碼。mmap()返回EINVAL
void* mapped =
mmap((void*)(map_addr + slide),
map_size,
PROT_WRITE | PROT_READ,
MAP_PRIVATE | MAP_ANON,
bprm->file,
map_offset);
我檢查的文件對我的平臺(達爾文)這個功能似乎沒有被任何事。 mmap的手冊頁提供了EINVAL將返回的四種情況。
[EINVAL] MAP_FIXED was specified and the addr argument was not page
aligned, or part of the desired address space resides out of the
valid address space for a user process.
MAP_FIXED未指定,所以不是這樣。
[EINVAL] flags does not include either MAP_PRIVATE or MAP_SHARED.
MAP_PRIVATE存在。
[EINVAL] The len argument was negative.
中的LEN(map_size)在呼叫的時間參數是8192
[EINVAL] The offset argument was not page-aligned based on the page size as
returned by getpagesize(3).
offset參數(map_offset)爲0,因此它必須是頁對齊。 (也許我錯了?)
使用MAP_ANON,某些實現需要fd爲-1。可能值得檢查。 – 2012-04-10 12:48:05
** @ Simon Elliott **是的,你是對的。謝謝。 – 2012-04-10 12:51:05