Linux文件操作的示例分析

小編給大家分享一下Linux文件操作的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站主要從事網(wǎng)站設(shè)計制作、成都做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)長嶺,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

創(chuàng)建

int creat(const char *filename, mode_t mode);

參數(shù)mode 指定新建文件的存取權(quán)限,它同umask 一起決定文件的最終權(quán)限(mode&umask),其中umask 代表了文件在創(chuàng)建時需要去掉的一些存取權(quán)限,它只影響讀、寫和執(zhí)行權(quán)限,調(diào)用函數(shù)為int umask(int newmask)。

打開

int open(const char *pathname, int flags);

pathname是我們要打開的文件名(包含路徑名稱,默認(rèn)在當(dāng)前路徑下)

flags打開的標(biāo)志

O_RDONLY 以只讀的方式打開文件

O_WRONLY 以只寫的方式打開文件

O_RDWR 以讀寫的方式打開文件

O_APPEND 以追加的方式打開文件

O_CREAT 創(chuàng)建一個文件

O_EXEC 如果使用了O_CREAT而且文件已經(jīng)存在,就會發(fā)生一個錯誤

O_NOBLOCK 以非阻塞的方式打開一個文件

O_TRUNC 如果文件已經(jīng)存在,則刪除文件的內(nèi)容

int open(const char *pathname,int flag,mode_t mode)

當(dāng)flag為O_CREATE,指定mode標(biāo)志,用來表示文件的訪問權(quán)限

S_IRUSR 用戶可以讀

S_IWUSR 用戶可以寫

S_IXUSR 用戶可以執(zhí)行

S_IRWXU 用戶可以讀、寫、執(zhí)行

S_IRGRP 組可以讀

S_IWGRP 組可以寫

S_IXGRP 組可以執(zhí)行

S_IRWXG 組可以讀、寫、執(zhí)行

S_IROTH 其他人可以讀

S_IWOTH 其他人可以寫

S_IXOTH 其他人可以執(zhí)行

S_IRWXO 其他人可以讀、寫、執(zhí)行

S_ISUID 設(shè)置用戶的執(zhí)行ID

S_ISGID 設(shè)置組的執(zhí)行ID

mode標(biāo)志也可以用數(shù)字來表示文件權(quán)限:

每個數(shù)字可以取1(執(zhí)行權(quán)限)、2(寫權(quán)限)、4(讀權(quán)限)、0(無)或者是這些值的和。

第一位表示設(shè)置用戶ID

第二位表示設(shè)置組ID

第三位表示用戶自己的權(quán)限位

第四位表示組的權(quán)限

第五位表示其他人的權(quán)限

open("test", O_CREAT, 10705);

上述語句等價于:

open("test", O_CREAT, S_IRWXU | S_IROTH | S_IXOTH | S_ISUID );

讀寫

int read(int fd, const void *buf, size_t length);
int write(int fd, const void *buf, size_t length);

參數(shù)fd文件描述符,buf為指向緩沖區(qū)的指針,length為緩沖區(qū)的大?。ㄒ宰止?jié)為單位),返回值為實際讀取和寫入的字節(jié)數(shù)。

read( )實現(xiàn)從文件描述符fd所指定的文件中讀取length個字節(jié)到buf所指向的緩沖區(qū)中,返回值為實際讀取的字節(jié)數(shù)

write( )實現(xiàn)將把length 個字節(jié)從buf 指向的緩沖區(qū)中寫到文件描述符fd所指向的文件中,返回值為實際寫入的字節(jié)數(shù)。

定位

對于隨機文件,我們可以隨機地指定位置讀寫:
int lseek(int fd, offset_t offset, int whence);

lseek()將文件讀寫指針相對whence移動offset(可取負(fù)值)個字節(jié)。操作成功時,返回文件指針相對于文件頭的位置。

參數(shù)whence可以使用如下值:

SEEK_SET:相對文件開頭。
SEEK_CUR:相對文件讀寫指針的當(dāng)前位置。
SEEK_END:相對文件末尾。

關(guān)閉

int close(int fd);

C庫函數(shù)的文件操作——獨立于具體的操作系統(tǒng)平臺

創(chuàng)建和打開

FILE *fopen(const char *path, const char *mode);
fopen()實現(xiàn)打開指定文件filename,其中的mode為打開模式,Linux 系統(tǒng)不區(qū)分二進(jìn)制文件和文本文件。

mode的值

r、rb 以只讀方式打開

w、wb 以只寫方式打開。如果文件不存在,則創(chuàng)建該文件,否則文件被截斷

a、ab 以追加方式打開。如果文件不存在,則創(chuàng)建該文件

r+、r+b、rb+ 以讀寫方式打開

w+、w+b、wh+ 以讀寫方式打開。如果文件不存在,則創(chuàng)建新文件,否則文件被截斷

a+、a+b、ab+ 以讀和追加方式打開。如果文件不存在,則創(chuàng)建新文件

讀寫

int fgetc(FILE *stream);
int fputc(int c, FILE *stream);
char *fgets(char *s, int n, FILE *stream);
int fputs(const char *s, FILE *stream);
int fprintf(FILE *stream, const char *format, ...);
int fscanf (FILE *stream, const char *format, ...);
size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
size_t fwrite (const void *ptr, size_t size, size_t n, FILE *stream);
int fsetpos(FILE *stream, fpos_t *pos);
nt fsetpos(FILE *stream, const fpos_t *pos);
int fseek(FILE *stream, long offset, int whence);

fread()實現(xiàn)從stream中讀取n 個字段,每個字段為size個字節(jié),并將讀取的字段放入ptr 所指的字符數(shù)組中,返回實際已讀取的字段數(shù)。

write()實現(xiàn)從緩沖區(qū)ptr 所指的數(shù)組中把n 個字段寫到stream 中,每個字段長為size個字節(jié),返回實際寫入的字段數(shù)。

關(guān)閉

int fclose (FILE *stream);

Linux文件系統(tǒng)目錄結(jié)構(gòu)

Linux文件操作的示例分析

/bin----存放著最經(jīng)常使用的基本命令,如ls、cp、mkdir 等,這個目錄中的文件都是可執(zhí)行的。

/boot----啟動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件,如vmlinuz、initrd.img

/dev----設(shè)備文件存儲目錄,應(yīng)用程序通過對這些文件的讀寫和控制就可以訪問實際的設(shè)備。

/etc----系統(tǒng)管理所需要的配置文件和子目錄,如用戶賬號及密碼配置文件。

/home----普通用戶的家目錄,每個用戶都有一個自己的目錄,一般該目錄名是以用戶的賬號命名的。

/lib----庫文件存放目錄,系統(tǒng)最基本的動態(tài)連接共享庫,類似于Windows里的DLL文件。

/lost+found----一般情況下是空的,當(dāng)系統(tǒng)意外崩潰或機器意外關(guān)機時會產(chǎn)生一些文件碎片放在這里。

/mnt----方便用戶臨時掛載別的文件系統(tǒng)的,如將光驅(qū)掛載在/mnt/上,進(jìn)入該目錄就可以查看光驅(qū)里的內(nèi)容

media----自動識別一些設(shè)備掛載到這個目錄下,例如U盤、光驅(qū)等等。

/opt----給主機額外安裝軟件所存放的目錄

/proc----操作系統(tǒng)運行時,進(jìn)程及內(nèi)核信息(比如CPU、硬盤分區(qū)、內(nèi)存信息等)存放在這里。它是系統(tǒng)內(nèi)存的映射,存在在內(nèi)存,通過直接訪問這個目錄來獲取系統(tǒng)信息。

/root----超級權(quán)限用戶的家目錄

/sbin----超級權(quán)限用戶的可執(zhí)行命令存放目錄,普通用戶無權(quán)限執(zhí)行這個目錄下的命令

/tmp-----存放臨時文件。

/usr-----系統(tǒng)應(yīng)用程序和文件(如命令、幫助文件)存放程序的目錄,類似于windows下的program files目錄。

/var-----經(jīng)常被修改的目錄放在這個目錄下,如日志文件

/sys----內(nèi)核設(shè)備樹的一個直觀反映。當(dāng)一個內(nèi)核對象被創(chuàng)建的時候,對應(yīng)的文件和目錄也在內(nèi)核對象子系統(tǒng)中被創(chuàng)建。

/initrd---若在啟動過程中使用了initrd 映像作為臨時根文件系統(tǒng),則在執(zhí)行完其上的/linuxrc掛接真正的根文件系統(tǒng)后,原來的初始RAM文件系統(tǒng)被映射到/initrd目錄。

以上是“Linux文件操作的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

新聞名稱:Linux文件操作的示例分析
路徑分享:http://muchs.cn/article30/pgddpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、云服務(wù)器、全網(wǎng)營銷推廣、用戶體驗、電子商務(wù)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)