真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux中mmap函數(shù)如何使用-創(chuàng)新互聯(lián)

linux中mmap函數(shù)如何使用,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)建站致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括成都網(wǎng)站設(shè)計、成都做網(wǎng)站、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)建站為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)建站核心團隊10余年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。

Linux提供了內(nèi)存映射函數(shù)mmap, 它把文件內(nèi)容映射到一段內(nèi)存上(準確說是虛擬內(nèi)存上), 通過對這段內(nèi)存的讀取和修改, 實現(xiàn)對文件的讀取和修改, 先來看一下mmap的函數(shù)聲明:


  • 頭文件:

  • 原型: void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offsize);

  • 返回值: 成功則返回映射區(qū)起始地址, 失敗則返回MAP_FAILED(-1).

  • 參數(shù):

    • MAP_SHARED: 對映射區(qū)域的寫入數(shù)據(jù)會復(fù)制回文件, 且允許其他映射該文件的進程共享.

    • MAP_PRIVATE: 對映射區(qū)域的寫入操作會產(chǎn)生一個映射的復(fù)制(copy-on-write), 對此區(qū)域所做的修改不會寫回原文件.

    • 此外還有其他幾個flags不很常用, 具體查看linux C函數(shù)說明.

    • PROT_EXEC: 映射區(qū)可被執(zhí)行.

    • PROT_READ: 映射區(qū)可被讀取.

    • PROT_WRITE: 映射區(qū)可被寫入.

    • PROT_NONE: 映射區(qū)不能存取.

    • addr: 指定映射的起始地址, 通常設(shè)為NULL, 由系統(tǒng)指定.

    • length: 將文件的多大長度映射到內(nèi)存.

    • prot: 映射區(qū)的保護方式, 可以是:

    • flags: 映射區(qū)的特性, 可以是:

    • fd: 由open返回的文件描述符, 代表要映射的文件.

    • offset: 以文件開始處的偏移量, 必須是分頁大小的整數(shù)倍, 通常為0, 表示從文件頭開始映射.

    下面說一下內(nèi)存映射的步驟:

  • 用open系統(tǒng)調(diào)用打開文件, 并返回描述符fd.

  • 用mmap建立內(nèi)存映射, 并返回映射首地址指針start.

  • 對映射(文件)進行各種操作, 顯示(printf), 修改(sprintf).

  • 用munmap(void *start, size_t lenght)關(guān)閉內(nèi)存映射.

  • 用close系統(tǒng)調(diào)用關(guān)閉文件fd.

注意事項:

在修改映射的文件時, 只能在原長度上修改, 不能增加文件長度, 因為內(nèi)存是已經(jīng)分配好的.

看完上述內(nèi)容,你們掌握linux中mmap函數(shù)如何使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


當前題目:linux中mmap函數(shù)如何使用-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://weahome.cn/article/iesgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部