●第1章 Linux基礎 1
1.1 概述 1
1.1.1 Linux內核和發行版 1
1.1.2 Linux的發展要素 3
1.2 Linux的安裝 5
1.2.1 在虛擬機上安裝 5
1.2.2 在實體機上安裝 12
1.3 Linux操作環境 12
1.3.1 GNOME簡介 12
1.3.2 Linux文件繫統 17
1.3.3 Shell 22
1.4 小結 24
1.5 習題 25
第2章 Linux Shell命令操作 26
2.1 獲取幫助 26
2.1.1 --help選項 27
2.1.2 man 28
2.1.3 info 29
2.2 通配符、引號、管道和輸入輸出重定向 29
2.2.1 通配符 29
2.2.2 轉義字符 30
2.2.3 引號 30
2.2.4 管道 31
2.2.5 輸入、輸出重定向 31
2.3 基礎操作 33
2.3.1 sudo 33
2.3.2 路徑和當前工作目錄 33
2.3.3 創建和刪除文件 34
2.3.4 創建和刪除目錄 35
2.3.5 查看用戶、日期和輸出簡單信息 35
2.3.6 命令歷史和名稱補全 36
2.3.7 ls命令 37
2.3.8 別名 38
2.4 瀏覽及搜索文件繫統 39
2.4.1 find 39
2.4.2 which 40
2.4.3 whereis 40
2.4.4 locate 41
2.5 閱讀文本文件 42
2.5.1 cat 42
2.5.2 more和less 42
2.5.3 head和tail 43
2.6 編輯文本文件 43
2.6.1 vi 43
2.6.2 gedit 46
2.7 文件內容操作命令 46
2.7.1 grep 46
2.7.2 sort 48
2.7.3 diff 49
2.7.4 wc 50
2.8 文件的復制、移動、鏈接和歸檔 51
2.8.1 cp 51
2.8.2 mv 52
2.8.3 ln 53
2.8.4 tar 53
2.9 文件繫統操作 55
2.9.1 掛載——mount 55
2.9.2 卸載——umount 57
2.9.3 查看繫統信息 57
2.10 用戶管理 58
2.11 文件權限操作 59
2.12 進程相關命令 61
2.12.1 進程和作業 61
2.12.2 查看進程——ps 62
2.12.3 結束進程——kill 64
2.13 網絡相關命令 64
2.14 小結 66
2.15 習題 66
第3章 Linux Shell編程 68
3.1 基礎知識 68
3.1.1 第一個Shell程序 68
3.1.2 如何運行Shell程序 69
3.1.3 Shell的命令種類 70
3.1.4 Shell執行命令的順序 71
3.1.5 注釋、退出狀態和邏輯操作 71
3.1.6 復合命令 72
3.2 Shell變量 73
3.2.1 變量的賦值與引用 73
3.2.2 命令替換 74
3.2.3 變量屬性聲明 75
3.2.4 數組變量 75
3.2.5 變量引用操作符 77
3.2.6 位置參數和特殊變量 79
3.2.7 read命令 81
3.2.8 export語句 82
3.3 控制結構 83
3.3.1 條件測試 83
3.3.2 if語句 88
3.3.3 case語句 89
3.3.4 while語句 91
3.3.5 until語句 92
3.3.6 for語句 93
3.3.7 break、continue和exit 96
3.4 Shell函數 98
3.5 Shell內部命令 99
3.6 Shell程序調試 101
3.7 小結 103
3.8 習題 103
第4章 Linux C語言編程基礎 105
4.1 gcc編譯器 105
4.1.1 概述 105
4.1.2 第一個C程序 106
4.1.3 編譯選項 107
4.2 Eclipse CDT 111
4.2.1 簡介、安裝和啟動 111
4.2.2 創建項目並運行 112
4.2.3 程序調試方法 116
4.3 C語言基礎 118
4.3.1 C語言概述 118
4.3.2 數據類型 119
4.3.3 運算符與表達式 128
4.3.4 C語言的語句 130
4.3.5 控制結構 130
4.3.6 函數 135
4.3.7 內存管理 137
4.3.8 編譯預處理 138
4.4 小結 142
4.5 習題 143
第5章 文件 144
5.1 Linux文件I/O概述 144
5.1.1 簡介 144
5.1.2 文件和目錄 144
5.1.3 文件和設備 145
5.1.4 繫統調用和標準函數庫 146
5.2 底層文件訪問 146
5.2.1 文件描述符 146
5.2.2 文件的創建、打開和關閉 147
5.2.3 文件的讀、寫 148
5.2.4 文件的定位 150
5.2.5 文件屬性的讀取 152
5.2.6 文件屬性的修改 157
5.3 鏈接文件的操作 162
5.3.1 創建硬鏈接 162
5.3.2 創建和讀取符號鏈接 162
5.3.3 刪除鏈接 163
5.4 目錄文件的操作 165
5.4.1 目錄文件的創建與刪除 165
5.4.2 目錄文件的打開與關閉 166
5.4.3 目錄文件的讀取 167
5.5 設備文件 168
5.6 小結 168
5.7 習題 169
第6章 標準I/O庫 170
6.1 流和文件指針 170
6.2 緩存 171
6.3 流的打開和關閉 171
6.3.1 打開流 171
6.3.2 關閉流 173
6.4 基於字符和行的I/O 173
6.4.1 字符I/O 173
6.4.2 行I/O 176
6.5 二進制I/O 178
6.5.1 讀二進制流 178
6.5.2 寫二進制流 179
6.5.3 二進制I/O的常見用法 179
6.6 定位流 181
6.7 格式化I/O 182
6.7.1 格式化輸出 182
6.7.2 格式化輸入 185
6.8 臨時文件 186
6.9 文件流和文件描述符 188
6.10 小結 188
6.11 習題 188
第7章 進程和信號 192
7.1 進程的基本概念 192
7.1.1 什麼是進程 192
7.1.2 Linu程環境 193
7.2 進程的結構 199
7.2.1 進程控制塊和進程表 199
7.2.2 進程標識 199
7.2.3 進程的狀態 200
7.3 進程控制 202
7.3.1 system函數 202
7.3.2 exec函數 203
7.3.3 fork函數 206
7.3.4 vfork函數 208
7.3.5 進程的終止狀態 209
7.3.6 wait和waitpid函數 210
7.4 信號 213
7.4.1 簡介 213
7.4.2 捕獲信號 214
7.4.3 發送信號 216
7.4.4 信號集 219
7.4.5 sigaction函數 220
7.5 小結 222
7.6 習題 222
第8章 進程間通信 224
8.1 IPC簡介 224
8.2 管道 225
8.2.1 pipe函數 225
8.2.2 popen和pcolse函數 227
8.3 命名管道(FIFO) 229
8.4 SysV IPC 232
8.5 信號量 233
8.5.1 簡介 233
8.5.2 semget函數 233
8.5.3 semop函數 234
8.5.4 semctl函數 234
8.5.5 信號量的應用 235
8.6 共享內存 238
8.6.1 簡介 238
8.6.2 shmget函數 239
8.6.3 shmat和shmdt函數 239
8.6.4 shmctl函數 240
8.6.5 共享內存的應用 240
8.7 消息隊列 243
8.7.1 簡介 243
8.7.2 msgget函數 244
8.7.3 msgsnd函數 245
8.7.4 msgrcv函數 245
8.7.5 msgctl函數 246
8.7.6 消息隊列的應用 246
8.8 小結 248
8.9 習題 249
第9章 Gtk+編程基礎 250
9.1 Gtk+簡介 250
9.2 glib庫 251
9.3 Gtk+程序結構 254
9.3.1 第一個Gtk+程序 254
9.3.2 Gtk+的數據類型 255
9.3.3 初始化Gtk+ 256
9.3.4 創建和顯示窗口/構件 256
9.3.5 Gtk+的主循環 257
9.4 響應Gtk+的信號 257
9.4.1 完善第一個Gtk+程序 257
9.4.2 事件和信號 259
9.5 構件的基本概念 264
9.5.1 有窗口構件和無窗口構件 264
9.5.2 敏感性 264
9.5.3 焦點、獨占和缺省構件 265
9.5.4 構件狀態 265
9.6 構件的排列 266
9.6.1 容器構件 266
9.6.2 尺寸分配 266
9.6.3 GtkWindow 267
9.6.4 GtkBox 268
9.6.5 GtkTable 269
9.7 小結 272
9.8 習題 272
第10章 Gtk+構件 273
10.1 基礎構件 273
10.1.1 GtkImage 273
10.1.2 GtkButton 274
10.1.3 GtkEntry 275
10.1.4 GtkLabel 278
10.1.5 GtkCheckButton 280
10.1.6 GtkComboBoxText 282
10.1.7 GtkRadioButton 284
10.1.8 GtkScrolledWindow 287
10.1.9 GtkTextView 287
10.1.10 GtkSeparator 291
10.1.11 GtkFrame 291
10.2 菜單 293
10.3 工具欄 299
10.4 樹型構件和列表構件 304
10.4.1 模型 304
10.4.2 視圖 306
10.5 對話框 313
10.5.1 GtkMessageDialog 313
10.5.2 GtkFileChooserDialog 314
10.5.3 自定義對話框 316
10.6 小結 318
10.7 習題 318
參考文獻 320