ACE_Mem_Map::map第6个参数设置为非零时总是失败
//代码节选如下:ACE_HANDLE handle;
size_t filesize = 0;
ACE_Mem_Map map_data;
handle = ACE_OS::open(filename.c_str(), O_RDONLY, ACE_DEFAULT_FILE_PERMS);
filesize = ACE_OS::filesize(handle);
map_data.map(handle, remainsize > MAP_SIZE ? MAP_SIZE: remainsize, PROT_READ, ACE_MAP_PRIVATE, 0, position); //position为非零值
addr = map_data.addr();
if (addr == MAP_FAILED)
{
ACE_DEBUG ((LM_DEBUG,ACE_TEXT (" %D : map file error...\n")));
return -1;
}
结果总是返回-1 我的想法是分段映射一个大文件,一次映射几百兆(文件很大),但是设置ACE_Mem_Map::map的第六个参数为非零的时候总是失败,不知道是怎么回事! 你指定的文件偏移量必须得到对齐
页:
[1]