關於文件編程的函數分成兩種方式
- 系統調用,就是system called interface 採用系統提供的接口進行文件的編寫。
- 庫函數,不依賴於當前的RUNNING system 只是依賴庫函數,這種方式具有良好的可移植性。
其中讀寫函數運用的好壞直接影響了文件的讀寫性能,關於文件讀寫性能好壞,那就是對緩衝區BUF的使用情況的把握,比如我們的使用的文件系統(file system ) 是EXT2 該系統使用的塊大小是4k,這時我們的緩衝區應該是多少呢?
通過以下程序的測試!
#inclue
#define BUFSIZE 4096
int main(void)
{
int n;
char buf(BUFSIZE);
while((n=read(STDIN_FILENO,buf,BUFSIZE)) >0)
{
if(wirte(STDOUT_FILENO,buf,n) != n)
err_sys("write error!");
}
if(n < 0)
err_sys("read error!");
return 0;
}
最終發現是使用和文件系統的塊大小一致是最好的,所以是4K BUF 最合適!