Linux系統編程--文件IO操作


Linux思想即,Linux系統下一切皆文件。

一、對文件操作的幾個函數

1.打開文件open函數

int open(const char *path, int oflags);

int open(const char *path, int oflags,mode_t mode);

– 參數path表示:路徑名或者文件名。路徑名為絕對路徑名。

– 參數oflags表示:打開文件所采取的動作。

 下面幾個為常用參數:

O_RDONLY文件只讀;O_WRONLY文件只寫;O_RDWR文件可讀可寫;O_NOCTTY如果路徑指向終端,則不將設備作為此進程的控制終端;O_NDELAY非阻塞方式操作文件。

– mode表示:設置創建文件的權限。權限的宏定義很麻煩,可以直接用數字替代

– 返回值:出錯返回-1;否則返回文件句柄

 

2.打開文件creat函數(其主要作用為創建文件):

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

– 參數path表示:路徑名或者文件名。路徑名為絕對路徑名。

– 參數oflags表示:打開文件所采取的動作。

• O_RDONLY文件只讀;O_WRONLY文件只寫;O_RDWR文件可讀可寫

 

3.關閉文件close函數:

  int close(int fd);

參數為打開文件的句柄

 

4.寫文件write函數:

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

– 參數fd表示:使用open 函數打開文件之后返回的句柄。

– 參數*buf表示:寫入的數據

– 參數count表示:最多寫入字節數

– 返回值:出錯-1,;其它數值表示實際寫入的字節數

 

5.讀文件read函數:

• ssize_t read(int fdvoid *buf,size_t len);

– 參數fd:使用open 函數打開文件之后返回的句柄

– 參數*buf:讀出的數據保存的位置

– 參數len:每次最多讀len 個字節

– 返回值:錯誤返回-1,執行成功返回實際讀取值

 

二、代碼編寫

對文件的操作一般必需要用到以下幾步:

1、對文件的IO操作需要的頭文件基本是一樣的,都需要用到以下幾個頭文件。實際編程中我們可以從終端里通過man命令查找然后復制過來直接用。例如,在Ubuntu終端里輸入man 2 read 后就可以查到關於read的用戶手冊,其中對read的詳細介紹就包括頭文件等等。其他函數用相同的方法都可查詢到。

 

#include <stdio.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <unistd.h>

#include <string.h>

 

2、在主函數里面定義一個整形的變量,來保存open返回的句柄值;

 

3、定義字符串,保存文件路徑;

 

4、為后面要用到的讀寫函數創建緩沖區數組,或ssize_t變量

 

5、采用一個if語句判斷打開文件是否正確,正確返回句柄值,不正確打印提示信息;

 

6、文件打開正確后,調用相應的讀寫函數,傳入正確參數進行相應的讀寫操作。

 

7、文件進行讀寫完操作后一定要通過close函數關閉,否則文件一直被占用就會影響其他程序的運行。

三、運行結果

1、open運行結果

 

 

 

/

2、creat運行結果

 

3、read運行結果

4、write運行結果

用vi打開/bin下的testwrite文件可以看到如下圖所示


免責聲明!

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



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