linux 檔案操作

影子流loki發表於2021-12-18

總結linux 下的常用檔案操作

開啟檔案 open

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

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

pathname:檔名

flags:檔案操作位

  O_RDONLY=只讀

  O_WRONLY=只寫

  O_RDWR=可讀可寫

返回值fd:-1=開啟錯誤

        其他=指向這個檔案的檔案描述符

 

從檔案中讀資料,把資料讀取到緩衝區:read

#include <unistd.h>

ssize_t numread=read(int fd, void *buf, size_t count);

fd=檔案描述符

buf=存放資料的目的緩衝區

count=讀取資料的位元組個數。

返回值numread:-1=讀取錯誤

    正整數=成功讀取的位元組數目

 

關閉檔案 close

#include <unistd.h>

int result=clsoe(int fd)

fd=檔案描述符

result:-1=關閉錯誤,0=關閉成功

 

建立/重寫檔案 creat

#include <fcntl.h>

int fd=creat(const char *pathname, mode_t mode);

pathname=檔名

mode=訪問模式

  O_APPEND

  O_ASYNC

  O_CLOEXEC

  O_CREAT

  ...

返回值: -1=錯誤,fd=檔案描述符

如果 pathname 存在,那麼就開啟這個檔案

如果 pathname 不存在,就建立這個檔案

 

向檔案寫入資料 write

#include <unistd.h>

ssize_t result=write(int fd, const void *buf, size_t count);

fd檔案描述符

buf= 待寫入資料

count= 寫入資料個數

result:-1=寫錯誤,正整數=成功寫入個數

 

每次系統開啟一個檔案都會儲存一個指標記錄檔案的當前記錄。

這個指標是與檔案描述符關聯的,有幾個檔案描述符既有幾個指標。

lseek 可以改變檔案描述符所關聯的指標的位置

重定位檔案讀寫位置 lseek

#include <sys/types.h>
#include <unistd.h>

off_t dolpos=lseek(int fd, off_t offset, int whence);

fd=檔案描述符

offset=檔案的移動距離,可以為負數

whence=移動起始位置

  SEEK_SET=檔案起始位置

  SEEK_CUR=檔案當前位置

  SEEK_END=檔案結束位置。

dolpos:-1=錯誤 正整數=指標變化前的位置

例:lseek(fd, 0, SEEK_CUR返回檔案指標指向的當前位置

 

相關文章