從例項中學習系統I O(入門級)

2021-10-01 07:28:50 字數 2115 閱讀 1720

i/o即輸入/輸出,此日誌只討論unix i/o

一切皆檔案。所有的i/o裝置都被模型化為檔案,則所有輸入/輸出都被當作對相應檔案的讀和寫來執行。

描述符。開啟檔案時核心會返回乙個小的非負整數,叫做描述符,它在後續對此檔案的所有操作中標識這個檔案。

linux shell 建立的每個程序開始時都有三個開啟的檔案: 標準輸入(描述符為0)、標準輸出(描述符為1)、標準錯誤(描述符為2)。

當前檔案位置。對於每個開啟的檔案,核心保持著乙個檔案位置k,初始為0。這個檔案位置是從檔案開頭起始的位元組偏移量

讀寫檔案。乙個讀操作就是從檔案複製若干位元組到記憶體,類似的,寫操作就是從記憶體複製若干位元組到檔案,從當前檔案位置k開始寫,並且更新k。

檔案操作函式

開啟或建立檔案

int

open

(char

*filename,

int flags,mode_t mode)

;

open函式將filename轉換成乙個檔案描述符,並且返回描述符數字。

flags引數指明指明了程序打算如何訪問這個檔案:

mode指定新檔案的訪問許可權位,具體不再詳說。

關閉檔案

int

close

(int fd)

;

fd為檔案描述符

讀寫檔案

ssize_t read

(int fd,

void

*buf,size_t n)

;ssize_t write

(int fd,

const

void

*buf,size_t n)

;

read函式從描述符為fd的當前檔案位置複製最多n個位元組到記憶體位置buf。返回值-1表示乙個錯誤,而返回值0表示eof。否則,返回值表示實際傳送的位元組數量。

write函式從記憶體位置buf複製最多n個位元組到描述符為fd的當前檔案位置。

例項一

#include

intmain

(int argc,

char

*ar**)

編譯執行

在編譯之前需要進行鏈結

執行結果

知識點介紹

dup2函式:

int

dup2

(int oldfd,

int newfd)

;

**分析

例項二

#include

intmain

(int argc,

char

*ar**)

else

return0;

}

編譯執行

知識點介紹

**分析

例項三

#include

intmain

(int argc,

char

*ar**)

編譯執行

命令列

執行結果

知識點介紹

fd1 =

open

(fname, o_creat|o_trunc|o_rdwr, s_irusr|s_iwusr)

;

fd3 =

open0)

;

fd2 =

dup(fd1)

;

**分析

linux系統 入門級

通俗來講,就是一款作業系統。跟你用的windows 蘋果mac os系統 手機安卓系統一樣。區別在於,linux系統是開源的,免費的,主要運用在伺服器端。也就是公司的伺服器上。上面一般是用來跑服務的,比如web服務 dns服務 遊戲服務。這些服務程式可以為使用者提供服務,比如你玩的遊戲,大多數的服務...

flask restful 入門級學習

1.安裝 pip install flask pip install flask restful 2.書寫規範 狀態碼3.flask restful外掛程式 flask restful是乙個專門用來寫restful api的乙個外掛程式。使用他可以快速的整合restful api的後台以及純api的...

Spring MVC入門級例項 基於註解

基於註解的 spring mvc與基於xml的配置 參考spring mvc入門級例項 基於xml的配置 大部分都一樣,下面來比較一下 1.web.xml 與基於xml的配置一樣 2.springmvc servlet.xml與基於xml的配置一樣 method view 可以看到這裡啟動了 con...