linux 檔案I O 程式設計

2021-05-25 12:25:30 字數 2325 閱讀 8604

1.

基本操作

#include

#include

#include

open

fd=open(「/tmp/hello.c」,o_wronly |o_creat,0600);

close

close(fd);

read

read(fd,buf,len)

write

write

(fd,buf,len

)lseek

off_t lseek(int fd,off_t ,int whence)

whence

seek_setseek_cur seek_end

lseek(fd,0,seek_set)

檔案指標移到檔案起始位置 2.

檔案鎖

fcntl

fcntl(int fd, int cmd, struct flock *lock)

cmdf_setlk f_getlk

lock

具體結構略,

說明鎖的型別,有

f_rdlck

讀取鎖(共享鎖,可共享)

f_wrlck

寫入鎖(互斥鎖)

f_unlck解鎖

fcntl(fd,f_rdlck,&lock);

fcntl(fd,f_wrlck,&lock);

fcntl(fd,f_unlck,&lock);

3.select

fcntl

解決了檔案共享的問題,接著就是

i/o復用的問題。 io

處理模型

包括,阻塞型

io模型,非阻塞模型,

io多路轉接模型,訊號驅動

io模型,非同步模型 對於

select

而言,屬於

io多路轉接模型

在這種模型下,如果請求的

io操作阻塞,且它不是真正的阻塞

io,而是讓其中的乙個函式等待,在這期間,

io還能進行其他操作,

select

函式和poll

函式就屬於此種模型。

#include

#include

#include

int select(int numfds,fd_set *readfds,fd_set *writefds,fd_set *exeptfds,struct timeval *timeout)

numfds

為需要檢測的號碼最高的檔案描述符

+1讀檔案描述集

寫檔案描述集

出錯檔案描述集

timeout

,如果為

0則從不等待

測試所有的描述集之後就返回

如果為null

,表示永遠等待,直到捕捉到訊號或者檔案描述集已經準備好。

對檔案描述集的操作包括,

fd_zero(fd_set *set)

fd_set(int fd,fd_set *set)

fd_clr(int fd,fd_set *set)

fd_isset(int fd,fd_set *set)

測試該集中的乙個給定位是否有變化 對於

select

和poll

的一些東東會在

udev

,socket

,電源管理中進一步說明

標準帶緩衝的

io操作包括三種緩衝儲存,全緩衝,行緩衝,不緩衝。1.

fopen fclose

file *stream;

stream=fopen(「test」,」r」); 「r」 「w」 「a」

fclose(stream);

size_t fread(void *ptr,size_t size,size_t nmemb,file *stream)

size_t fwrite(const void *ptr,size_t size,size_t nmemb,file *stream)

size

一條記錄的大小

nmemb

記錄的數目

write

返回成功寫入的記錄數目

例子,#include

int main() ;

stream=fopen(「test」,」w」);

i=fwrite(s,sizeof(char),sizeof(s),stream);

fclose(stream); }

2. fputc(fgetc(stdin),stdout);

char s[80];

fputs(fgets(s,80,stdin),stdout);

linux程式設計之檔案I O

linux下c語言對於檔案的操作,我們會經常用到fopen fclose fwrite fread fgets 等一系列庫函式,基本和是和windows下學習c語言一樣的,其實這些庫函式就是在linuxx下對系統呼叫函式的封裝,因此這裡只介紹系統函式下的檔案操作函式。一 open 開啟檔案 incl...

Linux程式設計基礎 檔案I O

unix linux為作業系統把服務和裝置都抽象成了檔案,並提供了一套簡單而統一的介面,這部分介面就是檔案讀寫。也就是說unix linux系統中的任何物件都可以被當作某種特殊的檔案,以檔案的形式訪問。檔案分類 目錄檔案 裝置檔案 socket檔案 管道檔案 普通檔案 鏈結檔案檔案相關的系統呼叫 i...

Linux學習 檔案I O程式設計

在linux中,為了保護核心空間,將程式的執行空間分為核心空間和使用者空間,核心態和使用者態 他們執行在不同的級別上,在邏輯上是相互隔離的,因此使用者程序在通常情況下不允許訪問核心資料,也無法使用核心函式,他們只能在使用者空間操作使用者資料,呼叫使用者空間的函式,作業系統為使用者提供了兩個介面 1....