[英]memory-mapped files in C
我在玩C語言中的內存映射文件,想知道是否有辦法透明地用內存映射文件替換fopen中的FILE *。
例:
FILE * fp = g_fopen(...);
//Program does things to this fp.
fclose();
但是相反,可能有FILE * fp = my_fopen(...)
在我自己的函數會打開磁盤上的文件的位置,可能會更改內容,然后將文件*傳遞回去,而程序不會看到任何與眾不同的東西,除了新的my_fopen()和my_fclose()。
不必重寫程序中的操作方式就可以做到嗎?
魔術詞是“庫插入”。 這是一個很好的教程: http : //developers.sun.com/solaris/articles/lib_interposers.html
當甲骨文購買sun時,許多文章似乎已經消失和/或無法通過甲骨文的網站訪問。
暫時有一些可用的鏈接:
內存映射文件IO的目的不是通過系統調用進行讀寫,而是依靠VM /緩沖區高速緩存來完成工作。 如果您隱藏了文件已進行內存映射的事實,那么這有什么好處? 您如何知道文件映射到的地址?
我不明白 您可以對已映射的文件進行讀/寫操作,因此my_fopen如下所示
FILE * my_fopen()
{
FILE * myfp
myfp = fopen(...);
mmap(fileno(myfp),...);
return myfp;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.