部分 III. Linux系統編程

目錄

28. 檔案與I/O
1. 彙編程序的Hello world
2. C標準I/O庫函數與Unbuffered I/O函數
3. open/close
4. read/write
5. lseek
6. fcntl
7. ioctl
8. mmap
29. 檔案系統
1. 引言
2. ext2檔案系統
2.1. 總體存儲佈局
2.2. 實例剖析
2.3. 數據塊定址
2.4. 檔案和目錄操作的系統函數
3. VFS
3.1. 內核資料結構
3.2. dup和dup2函數
30. 進程
1. 引言
2. 環境變數
3. 進程控制
3.1. fork函數
3.2. exec函數
3.3. wait和waitpid函數
4. 進程間通信
4.1. 管道
4.2. 其它IPC機制
5. 練習:實現簡單的Shell
31. Shell腳本
1. Shell的歷史
2. Shell如何執行命令
2.1. 執行互動式命令
2.2. 執行腳本
3. Shell的基本語法
3.1. 變數
3.2. 檔案名代換(Globbing):* ? []
3.3. 命令代換:`或 $()
3.4. 算術代換:$(())
3.5. 轉義字元\
3.6. 單引號
3.7. 雙引號
4. bash啟動腳本
4.1. 作為交互登錄Shell啟動,或者使用--login參數啟動
4.2. 以交互非登錄Shell啟動
4.3. 非交互啟動
4.4. 以sh命令啟動
5. Shell腳本語法
5.1. 條件測試:test [
5.2. if/then/elif/else/fi
5.3. case/esac
5.4. for/do/done
5.5. while/do/done
5.6. 位置參數和特殊變數
5.7. 函數
6. Shell腳本的調試方法
32. 正則表達式
1. 引言
2. 基本語法
3. sed
4. awk
5. 練習:在C語言中使用正則表達式
33. 信號
1. 信號的基本概念
2. 產生信號
2.1. 通過終端按鍵產生信號
2.2. 調用系統函數向進程發信號
2.3. 由軟件條件產生信號
3. 阻塞信號
3.1. 信號在內核中的表示
3.2. 信號集操作函數
3.3. sigprocmask
3.4. sigpending
4. 捕捉信號
4.1. 內核如何實現信號的捕捉
4.2. sigaction
4.3. pause
4.4. 可重入函數
4.5. sig_atomic_t類型與volatile限定符
4.6. 競態條件與sigsuspend函數
4.7. 關於SIGCHLD信號
34. 終端、作業控制與守護進程
1. 終端
1.1. 終端的基本概念
1.2. 終端登錄過程
1.3. 網絡登錄過程
2. 作業控制
2.1. Session與進程組
2.2. 與作業控制有關的信號
3. 守護進程
35. 綫程
1. 綫程的概念
2. 綫程控制
2.1. 創建綫程
2.2. 終止綫程
3. 綫程間同步
3.1. mutex
3.2. Condition Variable
3.3. Semaphore
3.4. 其它綫程間同步機制
4. 編程練習
36. TCP/IP協議基礎
1. TCP/IP協議棧與數據包封裝
2. 乙太網(RFC 894)幀格式
3. ARP數據報格式
4. IP數據報格式
5. IP地址與路由
6. UDP段格式
7. TCP協議
7.1. 段格式
7.2. 通訊時序
7.3. 流量控制
37. socket編程
1. 預備知識
1.1. 網絡位元組序
1.2. socket地址的數據類型及相關函數
2. 基于TCP協議的網絡程序
2.1. 最簡單的TCP網絡程序
2.2. 錯誤處理與讀寫控制
2.3. 把client改為互動式輸入
2.4. 使用fork並發處理多個client的請求
2.5. setsockopt
2.6. 使用select
3. 基于UDP協議的網絡程序
4. UNIX Domain Socket IPC
5. 練習:實現簡單的Web伺服器
5.1. 基本HTTP協議
5.2. 執行CGI程序