找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4191|回复: 2

ACE_Mem_Map::map第6个参数设置为非零时总是失败

[复制链接]
发表于 2007-12-12 23:56:20 | 显示全部楼层 |阅读模式
//代码节选如下:
  1. ACE_HANDLE handle;
  2. size_t filesize = 0;
  3. ACE_Mem_Map map_data;
  4. handle = ACE_OS::open(filename.c_str(), O_RDONLY, ACE_DEFAULT_FILE_PERMS);
  5. filesize = ACE_OS::filesize(handle);
  6. map_data.map(handle, remainsize > MAP_SIZE ? MAP_SIZE: remainsize, PROT_READ, ACE_MAP_PRIVATE, 0, position); //position为非零值
  7. addr = map_data.addr();
  8. if (addr == MAP_FAILED)
  9. {
  10.     ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("[error] %D : map file error...\n")));
  11.     return -1;
  12. }
复制代码
结果总是返回-1
 楼主| 发表于 2007-12-12 23:56:32 | 显示全部楼层
我的想法是分段映射一个大文件,一次映射几百兆(文件很大),但是设置ACE_Mem_Map::map的第六个参数为非零的时候总是失败,不知道是怎么回事!
 楼主| 发表于 2007-12-12 23:56:38 | 显示全部楼层
你指定的文件偏移量必须得到对齐
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-20 09:47 , Processed in 0.020363 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表