1. 程式人生 > >基於檔案描述符的檔案操作

基於檔案描述符的檔案操作

基於檔案操作符的檔案操作
1、檔案建立 -- creat
函式原型:int creat(const char *pathname, mode_t mode);
函式引數:pathname --建立的檔名
                  mode --建立的方式
S_IRUSR:可讀
S_IWUSR:可寫
S_IXUSR:可執行
S_IRWXU:可讀可寫可執行
0755 --> 111 101 101
=> 檔案所有者可讀可寫可執行,同組使用者可讀可執行,其它使用者可讀可執行。
函式作用:建立一個檔案
標頭檔案:#include <sys/types.h>
              #include <sys/stat.h>
              #include <fcntl.h>
返回值:成功返回新的檔案描述符,失敗返回-1。

2、檔案開啟
-- open
函式原型:int open(const char *pathname, int flags);
                  int open(const char *pathname, int flags, mode_t mode);
其中有三個引數的用於沒有檔案,需要建立的時候,其它情況用只有兩個引數的。
函式引數:pathname --開啟的檔名
                  flags --開啟的檔案方式
O_RDONLY:只讀
O_WRONLY:只寫
O_RDWR:讀寫
O_CREAT:沒有則建立
O_APPEND:追加
O_TRUNC:清空檔案
O_NONBLOCK:以不可阻斷的方式開啟
標頭檔案:#include <sys/types.h>
              #include <sys/stat.h>
              #include <fcntl.h>
返回值:成功返回新的檔案描述符,失敗返回-1。

3、檔案讀取
-- read
函式原型:ssize_t read(int fd,void * buf ,size_t count);
函式引數:fd --想要讀取的檔案描述符
                  buf --存放讀取的內容
                  count --讀取的位元組大小
標頭檔案:#include<unistd.h>
返回值:正常返回實際讀取到的位元組數,如果返回0,表示已到達檔案尾或是無可讀取的資料,出錯返回-1。
注意:讀取的檔案必須是已經存在的檔案,此外檔案讀寫位置會隨讀取到的位元組移動。

4、檔案寫入 -- write
函式原型:ssize_t write (int fd,const void * buf,size_t count);
函式引數:fd --想要寫入的檔案描述符
                  buf --寫入的資料
                  count --寫入的位元組大小
標頭檔案:#include<unistd.h>
返回值:成功會返回實際寫入的位元組數,失敗返回-1,錯誤程式碼存入errno 中。

5、檔案定位
-- lseek
函式原型:off_t lseek(int fildes, off_t offset, int whence);
函式引數:fildes --定位的檔案描述符
                  offset --移動位置(SEEK_SET檔案開頭 SEEK_CUR檔案當前位置 SEEK_END檔案末尾)
                  whence --(<0 向前,=0 當前位置,<0 向後)
標頭檔案:#include <sys/types.h>
              #include <unistd.h>

返回值:成功返回檔案的當前位置到檔案開頭有多少個位元組,出錯返回-1。

思考:如何求一個檔案的大小?

由於檔案定位的返回值是當前位置到檔案開頭的位元組大小,因此可以利用這點來求得檔案大小。

相關推薦

檔案描述&檔案指標

一.檔案描述符(file descriptors 簡稱fd)    在linux作業系統中開啟或者建立一個檔案就會獲得檔案描述符,那仫什仫是檔案描述符呢?我們知道在linux下 一切皆檔案,檔案描述符

檔案描述 檔案控制代碼 重定向

一檔案相關的系統呼叫 C語言標準庫函式中有對檔案的操作 fopen(),fwrite(),fread(),fclose();等 FILE *fd=fopen("./test.txt","w");

檔案描述 檔案描述標誌 檔案狀態標誌

檔案描述符 File Descriptors 檔案描述標誌 File Descriptors Flag 檔案狀態標誌 File Status Flag 檔案描述符是一個標示,非負整數,類似於windows裡的控制代碼,為了與標準C保持一致(標準C裡的檔案的讀寫

linux — 淺析檔案描述 檔案表項 v節點表項

淺析檔案描述符 檔案表項 v節點表項符檔案描述符在Linux程式設計裡隨處可見,裝置讀寫,網路通訊,程序通訊. 可是檔案描述符到底是什麼? 檔案描述符是一個簡單的整數,用以標明每一個被程序所開啟的檔案和

基於檔案描述檔案操作

基於檔案操作符的檔案操作1、檔案建立 -- creat 函式原型:int creat(const char *pathname, mode_t mode); 函式引數:pathname --建立的檔名

Linux 檔案描述(file descriptor, fd)以及檔案描述操作dup(), dup2()

1.概述 在Linux系統中,一切皆可以看做是“檔案”,這裡“檔案”包括普通檔案、目錄檔案、連結檔案和裝置檔案等。而檔案描述符(file descriptor, 簡稱fd)是Linux核心所建立的索引,其目的為了高效管理已被開啟的“檔案”。其實,檔案描述符就是一個非負整數(

Unix程式設計:檔案I/O操作檔案描述

Unix系統中大多數檔案I/O需要用到以下五個函式:open,read,write,lseek以及close。這些函式通常被稱為不帶緩衝的I/O(這些函式都是在核心中執行,它們直接對核心快取區進行讀寫)。 檔案描述符 對於核心而言,所有開啟的檔案都通過檔案描述符引用,檔案描

fork -- 子程序共享父程序開啟的檔案描述

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #define FILE_PATH "file_point" int main(int a

Linux高階程式設計基礎——檔案系統程式設計之檔案描述

檔案系統程式設計之檔案描述符——實驗題 /*編寫程式碼,完成以下功能: 1.建立新檔案,該檔案具有使用者讀寫許可權。 2.採用dup/dup2/fcntl複製一個新的檔案描述符,通過新檔案描述符向檔案寫入“class_name”字串; 3.通過原有的檔案描述符讀取檔案中的內容,並且列印顯示;*/

檔案描述

在C程式中,檔案由檔案指標或者檔案描述符表示。ISO C的標準I/0庫函式(fopen, fclose, fread, fwrite, fscanf, fprintf等)使用檔案指標,UNIX的I/O函式(open, close, read, write, ioctl)使用檔案描述符。下面重點來說下

【Android】dumpsys為什麼要傳送檔案描述

 突然間想起一個問題:dumpsys為什麼要傳送檔案描述符 而不採用獲取返回字串,然後再進行列印呢?   考慮了下,發現傳送檔案描述符這個大招確實很妙。 1. dump列印的資訊有時候很大,而binder不適合傳送大量的資料,binder驅動中分配的空間也是有限的

Linux:基礎IO(檔案描述分配規則)(重定向)(inode)(軟硬連結)(動態庫靜態庫)

目錄 檔案描述符的分配規則 重定向原理 FILE 總結 理解檔案系統 inode是什麼 inode內容 硬連結 軟連結 軟硬連結區別: 動態庫和靜態庫 如何生成自己的動態庫和靜態庫 如何連結一個庫生成可執行程式 檔案描述符的分配規則 最

Linux:基礎IO(cIO庫函式詳細介紹)(IO系統呼叫介面詳細介紹)(兩者關係:檔案描述檔案指標)

目錄 c系統中的庫函式: fopen:開啟檔案 fclose:關閉檔案 fwrite:向檔案寫入一個數據塊 fread:讀寫 fprintf:格式化輸出到一個流/檔案中 fseek:移動/跳轉 到當前 讀取/寫入位置 fgets:獲取字串 fput:把字串寫入到指

linux之檔案描述

寫在前面,linux的描述符有程序描述符、檔案描述符、記憶體描述符。首先標題想了很久linux的描述符從哪裡說起,看了幾份資料後還是決定從程序描述符說起。但是此文章還是重點說的是檔案描述符。知識深度有限,如有錯誤,請指出。 程序描述符:linux為了管理程序,核心必須對每個程序所作的事情進行清楚的描述,

什麼是檔案描述檔案控制代碼?兩者是什麼關係?

在python裡面有這樣一個函式: 網上解釋什麼是,檔案描述符: 核心(kernel)利用檔案描述符來訪問檔案。檔案描述符是非負整數。開啟現存檔案或新建檔案時,核心會返回一個檔案描述符。讀寫檔案也 需要 檔案描述符來指定待讀寫的檔案。 乍一看,怎麼和檔案控制代碼的描述很想,網上搜了一下:

Linux中檔案描述fb和檔案指標FILE*的聯絡與區別

檔案描述符: linux中,當一個程序開啟一個檔案或者是建立一個新檔案時,核心向程序返回一個檔案描述符來標示該檔案。 檔案描述符是一個非負整數,實際上它是一個索引,指向核心為程序所維護的一個檔案記錄表。 任何程式執行起來都會開啟三個預設的流,標準輸入流,標準輸出流,標準錯誤流通

android程序間傳遞檔案描述原理

在linux中,程序開啟一個檔案,返回一個整數的檔案描述符,然後就可以在這個檔案描述符上對該檔案進行操作。那麼檔案描述符和檔案到底是什麼關係?程序使用的是虛擬地址,不同程序間是地址隔離的,如何在兩個程序中傳遞檔案描述符,然後指向同一檔案(binder傳遞檔案描述符)? li

Linux下select函式檔案描述0狀態的問題

當然是在有輸入或者輸出時檔案描述符的讀寫狀態改變咯,比如標準輸入的檔案描述符是0,如果用select來等待0號檔案描述符,那麼當在鍵盤上敲字元時開始,就是檔案描述符的讀寫狀態改變之時,這時select函式就會返回;對於套接字描述符來說也是這樣,用select來等待一個伺服器描

檔案描述和開啟檔案

程序級的檔案描述符表 全域性系統級的開啟檔案表 檔案系統級的inode表   檔案描述符表中每一條目都記錄了單個檔案描述符的資訊 控制檔案描述符操作的標誌 close-on-exec 對開啟檔案控制代碼的引用 開啟檔案表中的

Unix環境程式設計之二:檔案描述、開啟檔案表、v節點關係詳解

一、檔案描述符概念 Linux 系統中,把一切都看做是檔案,當程序開啟現有檔案或建立新檔案時,核心向程序返回一個檔案描述符,檔案描述符就是核心為了高效管理已被開啟的檔案所建立的索引,用來指向被開啟的檔案,所有執行I/O操作的系統呼叫都會通過檔案描述符。 二、檔案