20145227《資訊保安系統設計基礎》第十二週學習總結

20145227鄢曼君發表於2016-12-04

20145227《資訊保安系統設計基礎》第十二週學習總結

教材學習內容總結

程式碼分析中出現的問題與解決彙總

執行testpp.c程式碼時出現段錯誤:

20145227《資訊保安系統設計基礎》第十二週學習總結

  • 解決:問題在於沒給pp分配空間就呼叫了pp[0],畢竟宣告的時候只是一個指標,而指標必須要初始化。有兩種解決辦法:

(1)pp[0] = malloc(20);修改為pp = malloc(20); pp[0] = malloc(20); 然後即可成功。

(2)把pp[0] = malloc(20);去掉[0],這樣就分配了20個位元組給了pp這個陣列指標,再編譯執行就ok了。

20145227《資訊保安系統設計基礎》第十二週學習總結

20145227《資訊保安系統設計基礎》第十二週學習總結

執行教材P598練習10.1時出錯:

20145227《資訊保安系統設計基礎》第十二週學習總結

20145227《資訊保安系統設計基礎》第十二週學習總結

  • 解決:
  • 缺少csapp.h的標頭檔案,這是書的作者編寫的一個標頭檔案,使用的時候要把此標頭檔案csapp.h和csapp.c檔案包含到你的系統中。先到網上下載這兩個檔案,下載地址(http://download.csdn.net/detail/tzasd89812/4206284);
  • 在命令列下輸入sudo mv csapp.h csapp.c /usr/include指令將檔案移到/usr/include中;開啟csapp.h標頭檔案,在#end if前面加上一句#include <csapp.c>
  • 由於csapp.c中包含執行緒的一部分,所以編譯的時候要加上-lpthread選項,否則很多錯誤,此時編譯執行:

20145227《資訊保安系統設計基礎》第十二週學習總結

  • 還是出錯了。按照提示將程式碼中的Open,Close換成了open和close,之後成功執行:

20145227《資訊保安系統設計基礎》第十二週學習總結

main函式的定義:int main(int argc, char *argv[]){}

  • argc是用來表示在命令列下輸入命令時的引數個數,包括指令本身;argv[]是用來取得你輸入的引數。

  • 涉及到的標頭檔案的用處:

stdio.h         標準輸入輸出
stdlib.h        C標準函式庫
unistd.h        Unix類系統定義符號常量
fcntl.h         定義了很多巨集和open,fcntl函式原型
sys/types.h     基本系統資料型別
dirent.h        unix類目錄操作的標頭檔案,包含了許多UNIX系統服務的函式原型,例如opendir函式、readdir函式。
termios.h       在Posix規範中定義的標準介面

本週程式碼託管連結

https://git.oschina.net/20145227/IS-Design-20145227/tree/master/ch12

學習進度條

程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0 2/2 20/20
第二週 100/100 1/3 20/40
第三週 200/300 1/4 22/62
第五週 200/500 1/5 22/84
第六週 274/774 1/6 22/106
第七週 127/901 2/8 22/128
第八週 50/951 2/10 22/150
第九周 418/1369 2/12 22/172
第十週 485/1854 2/14 22/194
第十一週 628/2482 3/17 32/226
第十二週 68/2550 2/19 32/258

參考資料

相關文章