我可以使用匿名mmap()作为malloc()的可重入版本吗?

时间:2015-09-14 01:01:14

标签: signals virtual-memory system-calls mmap reentrancy

虽然mmap()需要一个系统调用并且它只能分配整个页面,但它可以用作解决方法来使用信号处理程序的动态内存分配(malloc())。

malloc()不可重入,这会导致在控件处于malloc()(或free()realloc())时信号即将到来,并且它的处理程序试图使用这些函数,该过程可能会崩溃。

但是libc的mmap()只是同名内核api调用的包装器,因此它可能被认为是可重入的。当然,分配的内存页面应该稍后取消映射。

这可行吗?

0 个答案:

没有答案