2019-2020-1 20175320 《信息安全系統設計基礎》第八週學習總結

2019-2020-1 20175320 《信息安全系統設計基礎》第八週學習總結

1、教材學習內容總結

本週的內容爲系統級I/O的方式,主要是對各類應用調用的I/O函數進行了瞭解,如下是本週內容的總結:html

系統I/O

  • 打開文件的函數int open(char *filename, int flags, mode_t mode),其中flag是進程對文件的操做行爲,mode爲訪問權限位。函數返回一個文件描述符
  • 關閉文件的函數int close(int fd);
  • 讀文件的函數ssize_t Read(int fd, void *buf, size_t count);
  • 寫文件的函數ssize_t Write(int fd, const void *buf, size_t count);
  • 無緩衝的讀寫ssize_t rio_readn(int fd, void *usrbuf, size_t n); ssize_t rio_writen(int fd, void *usrbuf, size_t n);
  • 帶緩衝的讀寫ssize_t rio_readnb(rio_t *rp, void *usrbuf, size_t n); ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen);,其中帶緩衝的行讀取rio_readlineb與rio_readnb可加從使用,但帶緩衝區與不帶緩衝區的函數不能夠交叉使用,帶緩衝區的函數必須基於rio_read函數
  • 讀取文件信息的函數int stat(const char *filename, struct stat *buf); int fstat(int fd, struct stat *buf);
  • 讀取目錄內容的函數DIR *opendir(const char*name);以及struct dirent *readdir(DIR *dirp);其中實際使用中須要反覆調用readdir函數

man以及grep工具的使用

這裏我使用read函數做爲例子。
一、使用man -k read | grep 2命令查看read系統調用。

二、使用man -k read | grep 2 | grep file命令可在1的基礎上進一步縮小範圍。

三、使用grep -nr xxx /usr/include命令查看宏定義,其中n表示顯示行號,r表示遞歸。下圖查看了關鍵字爲MAXLINE的宏定義。
git

2、教材學習中的問題和解決過程

本週內容多爲代碼實踐,教材中沒有遇到問題。安全

3、代碼調試中的問題和解決過程

問題1:運行教材代碼1的時候出現如圖所示問題。

問題1解決方法:發現是沒有添加正確的頭文件,添加頭文件後正常運行。
問題2:練習10.1輸出爲-1,與實際不符。
問題2解決方法:沒有建立代碼中須要的文件,建立文件後正常運行。

問題3:練習10.3編譯後出現以下錯誤:

問題3解決方法:經過man 2 wait查找到所需的頭文件,添加後正常運行。
函數

附上練習5運行結果:
工具

4、代碼託管

5、其餘(感悟、思考等,可選)

本週內容爲系統級I/O,經過本章內容使我對系統基礎的I/O函數有了瞭解,這有助於自主實現系統功能,且使得我在沒法使用標準庫函數的時候有了相應的解決方法。學習

6、學習進度條

博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 30篇 400小時
第三週 1/1 13/13
第四周 1/2 22/35
第五週 1/3 30/65
第六週 1/4 25/90
第七週 1/5 22/112
第八週 1/6 25/137

嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。 耗時估計的公式 :Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。設計

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法3d

參考資料

相關文章
相關標籤/搜索