不帶快取的檔案i/o操作,主要用到
6個函式
--creat,open,read,write,lseek,close.
這裡的不帶快取是指每乙個函式都只呼叫系統中的函式,這些函式雖然不是ansi c
的組成部分,但卻是posix的組成部分。
下面就來介紹一下這幾個函式:
1.creat:
函式的作用:
建立檔案;
函式原型:
int creat(const char *pathname, mode_t mode);
函式引數:
pathname:要建立的檔案路徑字串(使用時要加雙引號);
mode: 建立檔案的許可權;
函式返回值:
int型
.成功返回檔案描述符,
出錯返回 -1;
函式標頭檔案:
#include
#include
#include
2.open
函式作用:
開啟或者建立檔案。
函式原型:
int open (const char *pathname, int flags);
int open (const char *pathname,int flags, mode_t mode);
函式引數:
flags:使用的標誌;例如:
o_rdonly 唯讀;
o_wronly 只寫;。。。。。。
返回值:
int 型;
成功返回檔案描述符;
失敗返回 -1;
標頭檔案:(同上); 3.
read
函式作用:
從開啟的檔案中讀取資料
函式原型:
ssize_t read(int fd, void *buf, size_t count);
函式引數:
fd:open返回的檔案描述符。
buf:放置都出來的資料緩衝區。
count:要讀取的字元數。
返回值:
ssize_t (自己重新命名的型別,一般為
int型);
成功返回讀到的字元數(位元組)
出錯返回-1;
標頭檔案:
#include 4.
write
函式作用:
將資料寫入已經開啟的檔案內。
函式原型:
ssize_t write(int fd, const void *buf, size_t count);
函式引數:
count:寫入的位元組數。
返回值:
int 型;
成功返回實際寫入的位元組數。
失敗返回 -1.
5.lseek
函式作用:移動函式指標到指定位置。
函式原型:off_t lseek(int fd, off_t offset, int whence);
函式引數:
fd:檔案描述符。
whence:檔案的指標位置。例如:
seek_set 檔案頭
seek_cur 檔案的當前位置
seek_end 檔案尾
offset:檔案指標偏移量,向前移動是負數,向後是正數。
返回值:
int 型
.返回檔案指標到檔案頭的位元組數。
最後需要注意的是:當我們
write
函式寫入資料時,檔案指標指向了寫入的資料尾,這時如果還用
read
來讀取資料,是從檔案指標指的地方開始讀,是無法讀到資料的,所以要用
lseek
函式把指標指向檔案頭。(
lseek(fd,0,seek_set));
例如複製乙個檔案到另乙個檔案:
程式:
#include #include #include #include #include #define max_size 1024
int main(int argc, char *argv)
from_fd = open(argv[1],o_rdonly);
if(from_fd == -1)
to_fd = open(argv[2],o_wronly | o_creat,s_irusr | s_iwusr);
if(to_fd == -1)
while(from_read = (from_fd,buf,max_size))
else if(from_read > 0)
else if(to_write == from_read)
else if(to_write > 0)
}if(to_write == -1)
} }
close(from_fd);
close(to_fd);
exit(0);
}
linuxc不帶快取的檔案操作
系統呼叫 指作業系統提供給使用者程式呼叫的一組 特殊 介面,使用者程式可以通過這組介面來獲得作業系統核心提供的服務,例如使用者可以用來建立程序等。系統呼叫關係圖 從上圖可以看出系統將程式的執行空間分為了核心空間和使用者空間,通過api介面實現系統呼叫,目的是保護系統的核心。不帶快取的檔案i o操作 ...
不帶快取操作的I O操作(1)
函式的作用 建立乙個檔案 函式的原型 int creat const char filename,mode t mode 函式的引數 mode 為建立模式 可讀 s irusr 可寫 s iwusr 標頭檔案 include include include返回值 成功 新的檔案描述符 失敗 1 函式...
JSON檔案的讀寫操作 用到json包
在測試過程中,我們經常會碰到json形式的報文,那我們就要學會如何快速讀取json檔案了。讀取硬碟中的json檔案內容,具體方法是 json.load 前提 準備乙個json檔案資料 示例 如下 import json json檔案資料的路徑 filename c users fcl desktop...