Linux文件操作函數


creat() 函數

  

close() 函數

  

read() 函數

  

  • read 函數實際讀到的字節數少於要求讀的字節數時:
  1. 讀普通文件,在讀到要求字節數之前就到達文件尾
  2. 當從終端設備讀,通常一次最多讀一行;
  3. 當從網絡讀時,網絡中的緩沖機構可能造成返回值小於所要求讀的字節數;
  4. 某些面向記錄的設備,如磁帶,一次最多返回一個記錄;
  • 讀操作完成后,文件的當前位置將從讀之前的位置加上實際讀的字節數;
  • 當有錯誤發生時則返回 -1,錯誤代碼存入 errno 中,而文件讀寫位置則無法預期;

write() 函數

  

  • 數據無法一次性讀完時

    第二次讀 buf 中數據時,讀位置指針並不會自動移動
    按如下格式實現讀位置移動: write(fp, p1+len, (strlen(p1) len)len),直至指針恢復

  • Write 一次可以寫的最大數據范圍是 8192

    寫入數據大小最好小於 buff 中的值
    Count 參數值大於 SSIZE_MAX ,則 write 調用的結果未定義
    Count 參數值為 0 時, write 調用會立即返回 0 這個值

  • Write 調用返回時,內核已經將緩沖區所提供的數據復制到內核的緩沖區,

    但是無法保證數據已經寫出到預定的目的地

// Read 和 write 函數示例
#include <stdio.h >
#include <stdlib.h
#include <unistd.h
int main(void)
{
	char buf [100];
	int num = 0;
	if ((num = read(STDIN_FILENO, buf , 10)) == -1)
	{
	    printf("read error"); error(-1);
	} else {
	    // 將鍵盤輸入又輸出到屏幕上
	    write(STDOUT_FILENO,buf , num );
	}
return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM