当前位置 : 主页 > 编程语言 > c++ >

C中的内存映射文件

来源:互联网 收集:自由互联 发布时间:2021-06-23
我正在玩C中的内存映射文件,并想知道是否存在 是一种透明地用fopen替换FILE *和内存映射文件的方法. 例: FILE * fp = g_fopen(...);//Program does things to this fp.fclose(); 但相反,是否有可能有FILE
我正在玩C中的内存映射文件,并想知道是否存在
是一种透明地用fopen替换FILE *和内存映射文件的方法.

例:

FILE * fp = g_fopen(...);

//Program does things to this fp.

fclose();

但相反,是否有可能有FILE * fp = my_fopen(…)

我自己的函数会在磁盘mmap上打开一个文件,也许更改内容然后传回FILE *而程序看不到任何东西
除了新的my_fopen()和my_fclose()之外.

这是否可以不必重写程序中的操作方式?

神奇的词是“图书馆介入”.这是一个很好的教程: http://developers.sun.com/solaris/articles/lib_interposers.html

当Oracle购买sun时,许多文章似乎已经消失和/或无法通过Oracle网站访问.

这里有一些链接,暂时是可用的:

>这是2001年发表的原始文章:Building Library Interposers for Fun and Profit(Dobbs博士)
> developers.sun.com链接是原作者的转发版,可能与2001年的文章有所不同;这是重新发布:Debugging and Performance Tuning with Library Interposers(Wayback Machine)
>适用于Sun Studio / Oracle Solaris Studio的Linker & Libraries Guide.它涵盖了图书馆插入的主题,更多技术细节.

网友评论