**獲取檔案的元資料
linux od命令用於輸出檔案內容。
void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);
flags:
fd:-1
offset:0
返回值:
int munmap(void *addr, size_t length);
返回值:
#include
#include
#include
#include
#include
#include
intmain
(int argc,
char
*ar**)
//建立對映
void
*p=mmap
(null,6
,\ prot_read|prot_write,
map_shared,fd,0)
;if(p==map_failed)
printf
("success...\n");
//關閉檔案
close
(fd)
;//對記憶體的操作
int*q=
(int
*)p;
q[0]=
0x30313233
;//解除對映
檔案的元資料就是檔案的屬性,使用
ls -l [檔名]
#檢視
#include
#include
#include
int stat(const char *path, struct stat *buf)
;功能:獲取檔案的狀態資訊
引數:path:指定了檔案的名字
buf:將檔案的狀態資訊儲存到buf指定的空間裡。
返回值:
-1 錯誤 errno被設定
0 成功
struct stat
;
#include
#include
struct passwd *getpwuid(uid_t uid)
;功能:獲取使用者的資訊
引數:uid:指定使用者的uid
返回值:
返回乙個指向struct passwd結構體的指標
null 找不到這個使用者的資訊或錯誤產生 如果是產生錯誤,errno被設定
/etc/passwd檔案的內容
這個檔案裡存放的是系統的所有使用者的資訊。
struct passwd
;
getgrnam(3)
getgrgid(3)
#include
#include
struct group *getgrgid(gid_t gid)
;功能:獲取一條組資訊
引數:gid:指定的組id
返回值:
返回乙個指向struct group結構體的指標
null 找不到這個組的資訊或錯誤產生 如果是產生錯誤,errno被設定.
struct group
;
ctime(3)
#include
char *ctime(const time_t *timep)
;功能:將長整型的時間轉換為字串格式
引數:timep:長整型的時間
返回值:
null 錯誤
字串
#include
#include
#include
#include
#include
#include
#include
intmain
(int argc,
char
*ar**)
printf
("size:%ld\n"
,sbuf.st_size)
;printf
("hard links:%d\n"
,\ sbuf.st_nlink)
;printf
("inode number:%lu\n"
,\ sbuf.st_ino)
;//printf("uid:%d\n",sbuf.st_uid);
p=getpwuid
(sbuf.st_uid);if
(p==
null
)printf
("username:%s\n"
,p->pw_name)
;//printf("gid:%d\n",sbuf.st_gid);
struct group *q=\
getgrgid
(sbuf.st_gid)
;printf
("group name:%s\n"
,q->gr_name)
;char
*st=
ctime
(&sbuf.st_atime)
;printf
("time:%s\n"
,st)
;printf
("mode:%o\n"
,sbuf.st_mode)
;#if 0if(
s_isreg
(sbuf.st_mode)
)printf
("-");
if(s_isdir
(sbuf.st_mode)
)printf
("d");
printf
("\n");
#endif
switch
(sbuf.st_mode&s_ifmt)
printf
("\n");
//列印出屬主的許可權
將檔案對映到記憶體
mmap的好處 和read write系統呼叫相比不會產生無關的副本 如果不出錯就不會有系統呼叫 操作環境切換等開銷 不再需要lseek呼叫。mmap的壞處 記憶體對映總是pagesize的整數倍,會浪費一定的記憶體 如果要對映的內容非常大的時候可能找不到連續的線性位址空間 建立並維護核心相關資料結...
虛擬記憶體 mmap檔案記憶體對映
記憶體對映是虛擬記憶體系統的重要特性,即虛擬記憶體中的虛擬頁 virtual page 總是對應於磁碟上的物理頁 physical page 記憶體對映技術,可以使得使用檔案來初始化虛擬記憶體的內容 只在第一次引用到相應記憶體時,才會快取進主存 linux程序中可以使用mmap函式,建立乙個虛擬記憶...
iOS將大檔案對映到記憶體 讀取大檔案
from 2012年10月23日 在 中國區gps偏移糾正 適用於google地圖 一文中曾讀取乙個78m的大資料檔案,一開始採用了nsdata的datawithcontentsoffile 方法。不少人反饋說如果直接使用,將會耗盡ios的記憶體。其實這個是可以改善的。nsdata還有乙個api i...