linux下一切皆檔案,所以檔案io是很重要的也是很基礎的操作。關於linux檔案io的操作主要有五個方面,分別是開啟,關閉,建立,寫與讀。
我們先來看一下開啟檔案open函式:
int
open
(const
char
*path,
int oflags,mode_t mode)
;
– 引數path表示:路徑名或者檔名。路徑名為絕對路徑名。
– 引數oflags表示:開啟檔案所採取的動作
o_rdonly檔案唯讀;o_wronly檔案只寫;o_rdwr檔案可讀可寫;
o_noctty如果路徑指向終端,則不將裝置作為此程序的控制終端
o_ndelay非阻塞方式操作檔案
– mode表示:設定建立檔案的許可權。許可權的巨集定義很麻煩,可以直接用數
字替代– 返回值:出錯返回-1;否則返回檔案控制代碼
下面是open函式的例項:
//標頭檔案
#include
#include
#include
#include
//主函式
main()
printf
("\n%s fd is %d\n"
,leds,fd)
;//如果返回值為-1.列印錯誤資訊,否則輸出檔案的控制代碼
//因為該檔案路徑不存在,所以返回的資訊為:「open /bin/test1 failed」if(
(fd =
open
(test1,o_rdwr,
0777))
<0)
printf
("%s fd is %d\n"
,test1,fd)
;//如果返回值為-1.列印錯誤資訊,否則輸出檔案的控制代碼
//雖然該檔案路徑不存在,但是引數裡新增了o_creat,
//檔案不存在時建立檔案,所以返回的資訊為:「/dev/test2 fd is 5」if(
(fd =
open
(test2,o_rdwr|o_creat,
0777))
<0)
printf
("%s fd is %d\n"
,test2,fd)
;}
.c檔案寫完之後按照linux基礎(3)中的步驟,編譯該檔案,然後在arm板上執行即可。
關閉檔案操作比較簡單,引數只有乙個:
int
close
(int fd)
;
fd為已開啟檔案的控制代碼。
open函式裡面有o_creat引數可以直接建立不存在的檔案,creat建立檔案是另一種方法:
int
creat
(const
char
* pathname, mode_t mode)
;
– 引數path表示:路徑名或者檔名。路徑名為絕對路徑名。
– 引數oflags表示:開啟檔案所採取的動作。
• o_rdonly檔案唯讀;o_wronly檔案只寫;o_rdwr檔案可讀可寫
例程為:
//標準輸入輸出標頭檔案
#include
//檔案操作函式標頭檔案
#include
#include
#include
main()
printf
("%s fd is %d\n"
,leds,fd)
;//使用open函式開啟不存在的檔案,不新增o_creat識別符號,會報錯if(
(fd =
open
(test1, o_rdwr)
)<0)
//開啟檔案建立檔案,新增標誌位o_creat表示不存在這個檔案則建立檔案if(
(fd =
open
(test2, o_rdwr|o_creat,
0777))
<0)
printf
("%s fd is %d\n"
,test2,fd);
fd =
creat
(test3,
0777);
if(fd =-1
)else
}
寫檔案write函式:
ssize_t write
(int fd,
const
void
*buf, size_t count)
;
– 引數fd表示:使用open 函式開啟檔案之後返回的控制代碼。
– 引數*buf表示:寫入的資料
– 引數count表示:最多寫入位元組數
– 返回值:出錯-1,;其它數值表示實際寫入的位元組數
讀檔案read函式:
ssize_t read
(int fd,void
*buf,size_t len)
;
– 引數fd:使用open 函式開啟檔案之後返回的控制代碼
– 引數*buf:讀出的資料儲存的位置
– 引數len:每次最多讀len 個位元組
– 返回值:錯誤返回-1,執行成功返回實際讀取值
Linux學習筆記(6) 檔案I O
持續乙個禮拜的出差終於結束了,本次出差真是收益良多,不僅品嚐了正宗的大閘蟹,同時也是第一次體驗了產品的現場實施流程。明天開始繼續學習linux!分割線 因為各種原因,已經有十天沒有更新了,真是太不應該了,以後一定杜絕這種懶惰 無恥的情況!分割線 古話說得好,在linux之下,一切皆是檔案。有很多資源...
c基礎 6 檔案操作
1.讀檔案 2.寫檔案 三.fputs,fgets 行讀取和寫入 四.fprintf,fscanf格式化讀寫檔案內容 二.fwrite,fread二進位制的讀寫 stat 函式 fseek,ftell,rewind remove rename fflush 檔案流 重新整理快取 int main2 ...
Python基礎(6)檔案和I O流
coding gbk 文字檔案 with open r c users administrator desktop mysal python data.txt r as f with語句自動關閉檔案流 for s in f.readlines readlines 讀入多行內容 print s,end...