【发布时间】:2011-07-23 17:36:08
【问题描述】:
我有一个使用 mmap 系统调用的应用程序,我在编译几个小时后遇到问题,想知道为什么我得到 MAP_ANON 和 MAP_ANONYMOUS 未声明,我使用了一小段代码,我看到我可以很好地编译它,所以我尝试了一个基本的编译并且有效,我看到当你添加 -std=c99 时它失败了。是否存在 MAP_ANON 和 MAP_ANONYMOUS 在 C99 标准中无效的特定原因?我知道它们不是由 POSIX 定义的,而是由 BSD SOURCE 定义的,所以我只想知道为什么会这样。
【问题讨论】:
-
也可以考虑使用
shm_open,可以达到类似的效果,但是是POSIX。 -
不幸的是,
shm_open比mmap有更多的注意事项,并且由于其不可移植的 name 参数,它在实践中可能不再是标准。