我正在玩C中的内存映射文件,并想知道是否存在 是一种透明地用fopen替换FILE *和内存映射文件的方法. 例: FILE * fp = g_fopen(...);//Program does things to this fp.fclose(); 但相反,是否有可能有FILE
是一种透明地用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.它涵盖了图书馆插入的主题,更多技术细节.