首先,我創建一個文件和回聲一些字符的微博,貓文件它表明:爲什麼我不能寫入文件mmaped
sasdfasdfas
asfdasfsadf
然後在C節目,我打開該文件:
int fd=open("file",O_RDWR);
mmaped文件用:
unsigned char *addr=mmap(NULL,length,PROT_WRITE,MAP_PRIVATE,fd,pa_offset);
其中長度是大約由FSTAT劉寶的文件的大小int和pa_offset是0
open函數和MMAP函數所有返回好,這是,開放返回正整數樣3,並且mmap返回一個正確的地址,如0x7fd36999d000。
我從地址讀取文件,一切正常。當我寫入它時,它似乎寫入成功,因爲我在程序中打印內存,但如果我捕獲它,實際文件內容不會更改。
我已經嘗試了一些努力,如使用msync(),但都具有相同的結果。
你們誰會友善地告訴我我在哪裏被絆倒?我只想從mmap寫入文件-_-
僅僅因爲x86沒有沒有讀權限的寫權限並不意味着你應該從內存中讀取'mmap()ed'只寫。 – EOF