資訊保安系統設計基礎第九周總結

2022-09-09 03:30:12 字數 2532 閱讀 9052

第十章 系統級i/o

輸入操作是從i/o裝置拷貝資料到主存,輸出操作是從主存拷貝資料到i/o裝置

10.1unix i/o

乙個unix檔案就是乙個m個位元組的序列:

所有的i/o裝置都被模型化為檔案,所有的輸入和輸出都被當作對相應檔案的讀和寫來執行.這種將裝置影射為檔案的方式,稱為unix i/o

10.2開啟和關閉檔案

程序是通過呼叫open函式來開啟乙個已存在的檔案或者建立乙個新檔案的

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

flags引數也可以是乙個或者更多位掩碼的或,為寫提供給一些額外的指示:

程序通過呼叫close函式關閉乙個開啟的檔案

10.3讀和寫檔案

應用程式是通過分別呼叫read和write函式來執行輸入和輸出的

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

write函式從儲存器位置buf拷貝最多n個位元組到描述符fd的當前檔案位置。下圖展示了乙個程式使用read和write呼叫一次乙個位元組的從標準輸入拷貝到標準輸出

在某些情況下,read和write傳送的位元組比應用程式要求的要少。這些不足置不表示有錯誤,出現這種情況的原因如下:

10.4用rio包健壯的讀寫

rio提供了兩類不同的函式:

無緩衝的輸入輸出函式:通過呼叫rio-readn和rio-writen函式,應用程式可以在儲存器和檔案之間直接傳送資料

10.5讀取檔案元資料

應用程式能夠通過呼叫stat和fstat函式,檢索到關於檔案的資訊(元資料)

st-size成員包含了檔案的位元組數大小。st-mode成員則編碼了檔案訪問許可位和檔案型別

unix識別大量不同的檔案型別

unix提供的巨集指令根據st-mode成員來確定檔案的型別

10.6共享檔案

可以用許多不同的方式來共享unix檔案

10.7i/o重定向

unix外殼提供了i/o重定向操作符,允許使用者將磁碟檔案和標準輸入輸出聯絡起來

i/o重定向一種方式是使用dup2函式工作

附錄a 錯誤處理

錯誤處理包裝函式:給定某個基本的系統級函式佛foo,給定乙個有相同引數,只不過開頭字母大寫了的包裝函式foo.包裝函式呼叫基本函式並檢查錯誤.如果包裝函式發現了錯誤那麼它就列印一條資訊並終止程序.否則,他返回到呼叫者

a.1unix系統中的錯誤處理

系統級函式呼叫使用三種不同風格的返回錯誤:unix風格,posix風格,dns風格

1.unix風格的錯誤處理

unix早期開發出來的函式的函式返回值既包括錯誤**,也包括有用的結果

unix風格的錯誤處理**通常具有以下形式:

strerror函式返回某個errno值的文字描述

2.posix風格的錯誤處理

只用返回值來表明成功(0)或者失敗(非0),任何有用的結果都返回在通過引用傳遞進來的函式引數中

posix風格的錯誤處理**通常具有以下形式:

3.dns風格的錯誤處理

在失敗時返回null指標,並設定全域性變數h_errno

dns風格的錯誤處理**通常具有以下形式:

4.錯誤報告函式小結

使用下列錯誤報告函式來包容不同的錯誤處理風格:

錯誤報告函式的**:

a.2錯誤處理包裝函式

如果wait返回乙個錯誤,包裝函式列印一條資訊,然後退出.否則,他向呼叫者返回乙個pid

他的錯誤返回碼中不會包含有用的結果,所以成功時,包裝函式返回void

資訊保安設計基礎系統第九周學習總結

10系統級i o 10.1 unix i o 這一節涉及到作業系統的基本抽象之一 檔案。也就是說,所有的i o裝置都被模型化為檔案,而所有的輸入輸出都被當做對相應檔案的讀 寫。相關的執行動作如下 開啟檔案 應用程式向核心發出請求 要求核心開啟相應的檔案 核心返回檔案描述符 檔案描述符 標準錯誤 2 ...

資訊保安系統設計基礎期末總結

內容 部落格彙總 第四周讀書筆記 因為開始的時候編號從 第一周 開始,這裡為了和其他同學統一,跳過 第四周 直接寫 第五周 家庭作業 2.56 1 2.57 1 3.58 1.5 2 2.60 1 3 8.10 1 8.16 1 無附 小組內發言貼 學會的專業基礎能力 學會的實踐知識 學會的學習理念...

資訊保安系統設計基礎期中總結

搜尋指令 man k 例 man k k1 grep k2 grep 數字 搜尋同時含有k1 k2 最後的數字代表區段,常用的 1.linux 2.系統呼叫 3.c語言 vim指令 進入插入模式 i 退出插入模式 esc 命令列 儲存並退出 wq 只退出不儲存 q gcc與gdb gcc 預處理 g...