內容簡介
本書介紹Linux環境下Shell編程、C語言系統編程和Gtk+編程三個方面的知識。第1章~3章介紹Linux作業系統的基礎知識、Linux常用命令和Shell編程;第4章介紹C語言的基礎知識;第5~第8章介紹Linux系統編程,包括檔案I/O、標準I/O庫、進程和信號以及進程間通信等方面的知識;第9~第10章介紹如何使用Gtk+庫進行圖形界面編程。
本書編寫的宗旨是引導讀者快速入門,所以行文注重循序漸進、邏輯連貫、語言簡潔、闡述清晰、例程詳盡。
本書適合作為高等院校計算機相關專業“Linux環境編程”課程的教材或參考書,也適合具有一定編程基礎的讀者將其作為學習Linux環境下應用程式開發之入門教程。
目錄
第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 Linux進程環境 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