Linux部分系統IO函式

2021-10-03 14:46:45 字數 2416 閱讀 3565

1.系統io函式:

(1)open函式:

1).首先其需要包含標頭檔案:

#include

#include

#include

2).然後就是open的兩種引數

int open(const char *pathname,int flags);

int open(const char *pathname,int flags,mode_t mode);

open會返回檔案描述符返回-1則操作失敗

檔案描述符是在關閉檔案時close(標頭檔案#include)需要的引數

3)errno是全域性變數

標頭檔案==#include==

當函式呼叫發生錯誤的時候將會被設定值如果函式不發生錯誤就無定義而且不會置0

當引用函式發生錯誤時可以用perror函式來將函式發生錯誤的原因輸出

函式定義為:void perror(const char *s)

其引數的目的是使用者做的標記,是使用者呼叫函式用來幹什麼的時候發生了錯誤比如

perror(「open file」)函式在開啟檔案的時候發生錯誤,如圖(本目錄下是沒有hsllo.c這個檔案):

第二張圖就可以看出來perror的引數和其要發生錯誤的原因的關係

4)如何檢視檔案已經存在(這裡hsllo.c已經存在):

主要看open裡邊的第二個引數放的內容

(2)read和write函式:

這裡他倆的標頭檔案都是==#include==

read(檔案描述符,存放讀取的資料,讀取資料的位元組數);

write(檔案描述符,寫入檔案的資料,寫入資料的位元組數);

這裡的read會有乙個返回值是檔案描述符,如果是-1則讀取檔案失敗

如果是0則檔案讀取完畢

如果大於1則是讀取的位元組數

write為-1那麼代表寫入失敗

write大於等於0代表寫入的位元組數

這裡連續讀取的時候檔案指標檔案指標自動後移

注意一定要關閉檔案

以下便是具體的例項:

#include

#include

#include

#include

#include

#include

intmain()

int b=

open

("hsllo.c"

,o_rdwr);if

(b==-1

)char arr[

2048]=

;int c=

read

(b,arr,

sizeof

(arr));

if(c==-1

)while

(c) c=

read

(b,arr,

sizeof

(arr));

}close

(a);

close

(b);

return0;

}

(3)lseek函式

標頭檔案#include

#include

off_lseek(int fd,off_t offset,int whence)

lseekh函式會重新定位被開啟檔案的偏移量

offset是偏移量位元組

根據offset和whence的組合來決定

whence的值:

seek_set:從檔案頭部開始偏移offset個字元

seek_cur:從檔案當前讀寫指標開始增加offset個位元組的偏移量

seek_end:檔案偏移量設定為檔案大小加上偏移量位元組

offset為正則向檔案末尾移動,為負數則向檔案頭部向後移動

返回值為-1失敗否則返回值為新的偏移量

其有三個作用:

1.獲取檔案大小

2.移動檔案指標

3.檔案拓展

下面是測試檔案長度和檔案拓展:

要想擴充套件必須有兩個步驟乙個是offset設定拓展的長度

另乙個是再在檔案末尾寫點資料進去才能拓展進去

Linux系統程式設計 IO部分

標準i o是ansi c建立的乙個標準i o模型,移植性好。例如在windows下或者在liunx下等平台下進行c開發都使用printf函式進行列印,所以printf就是典型的標準io。file型別 基本函式 操作函式 開啟檔案 fopen 關閉檔案 fclose 獲取乙個字元 fgetc 輸出乙個...

matlab文件翻譯(部分)系統辨識概覽

本文翻譯自只試著翻譯了一小段 系統辨識是使用測得的系統輸入輸出訊號的測量量來建立動態系統數學模型的方法。系統辨識的構成需要你 原小節 dynamic systems and models 在乙個動態系統中,輸出訊號的值不僅取決於此時刻輸入訊號的量,還取決於系統過去的行為。例如,乙個汽車座椅就是乙個動...

Linux下檔案的阻塞與非阻塞對部分系統呼叫的影響

所謂的阻塞,即核心在對檔案操作i o系統呼叫時,如果條件不滿足 可能需要產生i o 則核心會將該程序掛起。非阻塞則是發現條件不滿足就會立即返回。此外需要注意的是非阻塞並不是輪詢,不然就和阻塞沒多大區別了,它只是呼叫不成功就直接返回了,不會在去看啥時候會滿足條件,而是有你自己去選擇接下來該咋辦,系統以...