Linux檔案I O操作

2021-05-02 22:02:43 字數 2493 閱讀 3657

可以呼叫l s e e k顯式地定位乙個開啟檔案。

#include

#include

off_t lseek(int filesdes, off_t offset, int whence) ;

返回:若成功為新的檔案位移,若出錯為- 1。

對引數offset

的解釋與引數w h e n c e

的值有關。

若whence

是seek_set,則將該檔案的位移量設定為距檔案開始處offset

個位元組。

若whence

是seek_cur ,則將該檔案的位移量設定為其當前值加offset,offset

可為正或負。

若whence

是seek_end ,則將該檔案的位移量設定為檔案長度加offset,offset

可為正或負。

用r e a d函式從開啟檔案中讀資料

#include

ssize_t read(int feledes, void *buff, size_t

nbytes) ;

返回:讀到的位元組數,若已到檔案尾為0,若出錯為- 1。

如r e a d成功,則返回讀到的位元組數。如已到達檔案的尾端,則返回0。

用w r i t e函式向開啟檔案寫資料。

#include

ssize_t write(int filedes, const void * buff,

size_t nbytes) ;

返回:若成功為已寫的位元組數,若出錯為- 1。

其返回值通常與引數nbytes

的值不同,否則表示出錯。w r i t e出錯的乙個常見原因是:磁碟已寫滿,或者超過了對乙個給定程序的檔案長度限制。

fcntl函式可以改變已經開啟檔案的性質。

#include

#include

#include

int fcntl(int filedes, int cmd, ... ) ;

返回:若成功則依賴於cmd(見下),若出錯為- 1。

f c n t l函式有五種功能:

n複製乙個現存的描述符, 新檔案描述符作為函式值返(c m d=f_dupfd)。

n獲得/設定檔案描述符標記,對應於filedes

的檔案描述符標誌作為函式值返回.(c m d = f_getfd或f_setfd)。

n獲得/設定檔案狀態標誌,對應於filedes

的檔案狀態標誌作為函式值返回。(c m d = f_getfl或f_setfl)。

n獲得/設定非同步i / o有權(c m d = f_getown或f_setown)。

n獲得/設定記錄鎖(c m d = f_setlk , f_setlkw)。

#include

#include

#include

int fcnt1(int filedes, int cmd,... struct flock flockptr ) ;

struct flock 結構

ioctl 函式是i / o操作的雜物箱。不能用本章中其他函式表示的i / o操作通常都能用i o c t l表示。終端i / o是ioctl 的最大使用方面,主要用於裝置的i / o控制。

#include /* svr4 */

#include /* 4.3+bsd * /

int ioctl(int filedes, int request, . . . ) ;

返回:若出錯則為- 1,若成功則為其他值

i/o處理的五種模型

①阻塞i/o模型:若所呼叫的i/o函式沒有完成相關的功能就會使程序掛起,直到相關資料到達才會返回。如:終端、網路裝置的訪問。

②非阻塞模型:當請求的i/o操作不能完成時,則不讓程序休眠,而且返回乙個錯誤。如:open、read、write訪問。

③i/o多路轉接模型:如果請求的i/o 操作阻塞,且他不是真正阻塞i/o,而且讓其中的乙個函式等待,在這期間,i/o還能進行其他操作。如:select函式。

④訊號驅動i/o模型:在這種模型下,通過安裝乙個訊號處理程式,系統可以自動捕獲特定訊號的到來,從而啟動i/o。

⑤非同步i/o模型:在這種模型下,當乙個描述符已準備好,可以啟動i/o時,程序會通知核心。由核心進行後續處理,這種用法現在較少

#include /* fd_set data type */

#include /* struct timeval */

#include /* function prototype might be here */

int select (int numfds, fd_set *readfds,

fd_set *writefds, fd_set *exceptfds, struct timeval * timeout) ;

返回:準備就緒的描述符數,若超時則為0,若出錯則為- 1。

linux檔案IO操作

說起linux程式設計來,甚至包括其他系統的程式設計,很大一部分都是處理io操作了 另乙個重要的部分是程序process 特別是在linux系統上,由於一切都是檔案 fd 的思想,更是擴大了檔案io的範疇。比如磁碟上檔案的io,網路io,終端io,管道io等等。這些io操作的共同點在於都是對檔案描述...

Linux操作GPIO(檔案IO方式)

首先,看看系統中有沒有 sys class gpio 這個資料夾。如果沒有請在編譯核心的時候加入 device drivers gpio support sys class gpio sysfs inte ce sys class gpio 的使用說明 gpio operation 通過 sys 檔...

Linux系統IO目錄檔案操作

linux目錄檔案 維護著乙個鍊錶的資料結構,目錄檔案的結構和單向鍊錶的節點的類似,可利用鍊錶的遍歷方法來實現目錄檔案遍歷.但是直接使用目錄流物件不會得到乙個鍊錶的節點 因為是流物件 需要配合readdir指令來移動流的當前位置指標,並獲得相應的鍊錶節點 目錄下的檔案的資訊 include incl...