Linux C 檔案管理2

風塵璞發表於2016-09-27


Linux檔案管理

系統呼叫(API):作業系統提供給使用者的一組特殊介面,使用者可用API來獲得作業系統的服務。


    系通呼叫          核心

   

程式執行空間   核心空間

               使用者空間

linux一點哲學:一切皆檔案

linux檔案:普通檔案、目錄檔案、連結檔案、裝置檔案

 

檔案:系統資源的一個抽象,對系統資源進行訪問的一個通用介面

用檔案的好處:簡化系統程式設計介面的設計

 

檔案描述符(fb)   1.非負整數

                   2.可表示各種型別開啟的檔案

                   3.使用可指定所操作的檔案

 

使用fb先會產生三個檔案   標準輸入  0         鍵盤

                          標準輸出  1         顯示器    有緩衝

                          標準錯誤  2         顯示器    無緩衝

 

用檔案時要呼叫三個標頭檔案   #include <sys/types.h>

                           #include <sys/stat.h>

                           #include <fcntl.h>

                           #include <unistd.h>   

開啟open

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

例:int fb;   fb = opne (“ a.txt “, O_CREAT | O_RDWR ,0755

 

要開啟或建立的檔案的名字                             建立時許可權

  開啟許可權:

O_CREAT         開啟的檔案若不存在就建立

O_RDONLY       只讀

O_WRONLY       只寫

O_RDWR         可讀寫

 

系統呼叫—讀 int  read( int fd ,const void  *buf  ,size_t length)

            從檔案中讀到緩衝區,返回讀入的個數

系統呼叫—寫 int  write( int fd ,const void  *buf  ,size_t length)

           把緩衝區的寫入檔案,返回寫的個數

系統呼叫—定位  int   lseek(int  fd, 偏移量,  起始位置)

例:int (int  fd , 0 ,SEEK_SET)

SEEK_SET  開頭

SEEK_CUR  當前

SEEK_END  

 

closefd) 關閉檔案

庫函式:標準I/O函式實際上是對底層系統的封裝

 

不用檔案描述符,使用檔案指標         指向FILE

FILE * fp

每個程式啟動後開啟三個流 

                         stdin

                           stdout

                           stderr

 

庫函式—開啟:FILE * fopen(const  char  * filename, const  char  *mode)

                             檔名                  開啟模式

 

r”  只讀,檔案必須已存在

w” 只寫,檔案不存在則建立,存在則清空再寫入

a” 在檔案末尾追加資料

r+”允許讀和寫,檔案必須已存在

w+”允許讀和寫,不存在則建立,存在則清空再寫入

a+” 允許讀和追加資料,檔案不存在則建立

 

檔案的作用僅僅是儲存

庫函式—寫和讀

fwrite ( void  * buf,size  ,int   n , FILE  * stream)

fread ( void  * buf,size  ,int   n , FILE  * stream)

庫函式—定位

fseek(fp   ,偏移量  ,起始位置)

                                        操作字元

fgetcfputcfprintffscanf:                 操作流級的

例子:   ch = fgetc( stdin );

       fputc( ch , stout);

fprintf(stout  ,”input  a string:\n”);

fscanf(stdin,” %s” ,buf_r);

 

  puts(char *)                    gets(char * )

  fputs(char * ,FILE *)             fgets(char  *,size  ,FILE  *)

 

fputsfgets           操作字串

 

printf         格式儲存


相關文章