linux 檔案操作
總結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)返回檔案指標指向的當前位置