基本信息
作 者:羅利民,王浩 編著出 版 社:電子工業出版社
出版時間:2012-6-1
版 次:1
頁 數:327
印刷時間:2012-6-1
開 本:16開
內容簡介
Linux系統可以免費地套用到多種伺服器上,所以開發人員都在往Linux系統上轉移,且很多開發都是使用C語言來完成的,這也是本書推出的關鍵所在。本書共分為五篇:第一篇是Linux系統知識,講述Linux系統的安裝和使用、常用命令、文本編輯器及程式的編譯與調試;第二篇是C語言基本知識,講述C語言的基本語法、指針、結構體、系統庫函式等知識;第三篇是Linux系統編程,講述Shell編程和檔案處理方法;第四篇是Linux網路編程,講解TCP和UDP網路編程的知識;第五篇是Linux C項目實戰,通過案例的學習,既複習了前面介紹的知識,也了解了項目實踐的流程和技巧,從而增加讀者的編輯經驗。目錄
目 錄第1篇 Linux系統知識
第1章 認識Linux系統 1
1.1 Linux發行版的介紹 1
1.1.1 Red Hat Linux 1
1.1.2 Debian Linux 1
1.2 Linux的安裝 2
1.2.1 Linux的分區格式 2
1.2.2 在Windows系統中
劃分Linux分區 2
1.2.3 Red Hat Linux 9.0的
安裝 4
1.2.4 GRUB在Windows
分區中引導Linux 13
1.3 VMware虛擬機安裝Linux
系統 15
1.3.1 VMware軟體安裝 15
1.3.2 新建虛擬計算機 17
1.3.3 VMware的使用 21
1.3.4 在VMware虛擬機中
安裝Linux系統 23
1.4 第一個C程式 25
1.4.1 在Linux中編寫C程式
代碼 25
1.4.2 編譯程式 25
1.5 小結 26
1.6 小測試 26
第2章 常用的Linux操作命令 28
2.1 目錄與檔案命令 28
2.1.1 查看目錄命令pwd 28
2.1.2 打開目錄命令cd 28
2.1.3 查看目錄命令ls 29
2.1.4 建立檔案命令touch 30
2.1.5 建立與刪除資料夾
命令mkdir、rmdir 30
2.1.6 檔案複製命令cp 31
2.1.7 檔案移動和更名
命令mv 32
2.1.8 刪除檔案與目錄
命令rm 32
2.1.9 創建連結命令ln 33
2.1.10 查看檔案信息
命令wc 33
2.1.11 檔案查看命令cat 34
2.1.12 查看檔案視圖
命令head與tail 34
2.1.13 檔案許可權設定
命令chmod 35
2.1.14 查找檔案命令find 36
2.2 man系統幫助命令 36
2.2.1 man手冊的使用方法 37
2.2.2 幫助文檔的結構 37
2.3 info手冊 38
2.4 小結 39
2.5 小測試 39
第3章 文本編輯器的使用 40
3.1 VIM的使用 40
3.1.1 VIM的啟動 40
3.1.2 在桌面上創建VIM
啟動器 40
3.1.3 VIM的工作模式 41
3.1.4 保存與打開檔案 42
3.1.5 移動游標 43
3.1.6 常用操作 43
3.1.7 選項設定 45
3.1.8 調用shell命令 46
3.2 VIM使用實例 46
3.2.1 字元的插入與刪除 46
3.2.2 字元的查找與替換 47
3.3 帶選單的GVIM 48
3.3.1 檔案的新建與保存 48
3.3.2 查找與替換 49
3.4 圖形化的gedit 50
3.4.1 gedit的啟動與打開
檔案 50
3.4.2 gedit編輯檔案 50
3.4.3 gedit列印檔案 51
3.4.4 gedit的首選項 52
3.5 小結 54
3.6 小測試 55
第4章 編譯與調試 56
4.1 編譯的概念和理解 56
4.1.1 程式編譯的過程 56
4.1.2 編譯器 57
4.2 gcc編譯器 57
4.2.1 gcc編譯器簡介 57
4.2.2 gcc對源程式擴展名
的支持 57
4.3 C程式的編譯 58
4.3.1 編寫第一個C程式 58
4.3.2 用gcc編譯程式 59
4.3.3 查看gcc的參數 59
4.3.4 設定輸出的檔案 60
4.3.5 查看編譯過程 61
4.3.6 設定編譯的語言 61
4.4 編譯過程的控制 62
4.4.1 編譯過程簡介 62
4.4.2 控制預處理過程 63
4.4.3 生成彙編代碼 63
4.4.4 生成目標代碼 64
4.4.5 連結生成執行檔 64
4.5 gdb調試程式 65
4.5.1 gdb簡介 65
4.5.2 在程式中加入調試
信息 65
4.5.3 啟動gdb 65
4.5.4 在gdb中載入需要
調試的程式 66
4.5.5 在gdb中查看代碼 66
4.5.6 在程式中加入斷點 66
4.5.7 查看斷點 67
4.5.8 運行程式 67
4.5.9 查看變數 68
4.6 程式調試實例 69
4.6.1 編寫一個程式 69
4.6.2 編譯檔案 70
4.6.3 程式調試 70
4.6.4 gdb幫助的使用 72
4.7 gdb常用命令 72
4.8 編譯程式常見的錯誤與問題 74
4.8.1 邏輯錯誤與語法錯誤 74
4.8.2 C程式中的錯誤與
異常 74
4.8.3 編譯中的警告提示 74
4.8.4 找不到包含檔案的
錯誤 75
4.8.5 錯誤地使用逗號 75
4.8.6 括弧不匹配錯誤 75
4.8.7 小括弧不匹配錯誤 76
4.8.8 變數類型或結構體聲明
錯誤 76
4.8.9 使用不存在的函式
錯誤 76
4.8.10 大小寫錯誤 76
4.8.11 數據類型錯誤 77
4.8.12 賦值類型錯誤 77
4.8.13 循環或判斷語句中
多加分號 77
4.9 小結 78
4.10 小測試 78
第2篇 C語言基本知識
第5章 C語言基礎 79
5.1 C程式的基本概念 79
5.1.1 C程式的基本結構 79
5.1.2 C程式的一般格式 80
5.1.3 C程式中的注釋 81
5.2 數據類型 82
5.2.1 整型(int) 82
5.2.2 浮點型(float) 83
5.2.3 字元型(char) 84
5.2.4 變數名 85
5.2.5 字元NULL 86
5.3 變數賦值與輸出 86
5.3.1 變數賦值 86
5.3.2 printf函式輸出變數 86
5.3.3 scanf函式從鍵盤
讀入變數 88
5.4 運算符 89
5.4.1 算術運算符 89
5.4.2 關係運算符 91
5.4.3 邏輯運算符 91
5.5 小結 92
5.6 小測試 93
第6章 C程式的常用語句 94
6.1 流程控制語句 94
6.1.1 if條件語句 94
6.1.2 if語句嵌套 96
6.1.3 switch選擇執行語句 98
6.1.4 for循環語句 99
6.1.5 for循環嵌套 101
6.1.6 for循環套用實例:輸出
九九乘法口訣表 102
6.1.7 while循環語句 103
6.1.8 do while循環語句 104
6.1.9 轉移控制語句:
continue 105
6.1.10 轉移控制語句:
break 106
6.1.11 轉移控制語句:
return 106
6.2 流程控制語句實例 107
6.2.1 三個數字的排序 107
6.2.2 解一元二次方程 108
6.3 兩種特殊語句結構 111
6.3.1 三元操作符 111
6.3.2 塊語句 112
6.4 小結 112
6.5 小測試 112
第7章 數組與指針 114
7.1 數組的理解與操作 114
7.1.1 什麼是數組 114
7.1.2 數組的定義與訪問 115
7.1.3 數組使用實例 116
7.2 指針 117
7.2.1 對指針的理解 117
7.2.2 指針操作符 117
7.2.3 指針的定義與訪問 118
7.2.4 指針使用實例 119
7.3 數組與指針 120
7.3.1 數組與指針的關係 120
7.3.2 指針的算術運算 120
7.3.3 字元數組與字元串 121
7.4 二維數組與多維數組 122
7.4.1 對二維數組的理解 122
7.4.2 二維數組與指針 123
7.5 實例 125
7.5.1 學生成績統計實例 125
7.5.2 冒泡法排序實例 126
7.5.3 統計字元串中的字元 127
7.5.4 小寫字母轉換成大寫
字母 129
7.5.5 用指針訪問數組 130
7.6 常見問題 131
7.6.1 錯誤的寫操作 131
7.6.2 指針的錯誤賦值 132
7.6.3 數組指針的越界錯誤 133
7.7 小結 134
7.8 小測試 134
第8章 函式 135
8.1 對函式的理解 135
8.1.1 什麼是函式 135
8.1.2 系統函式(庫函式)
與用戶自定義函式 136
8.1.3 函式的返回值 137
8.1.4 無參函式 138
8.1.5 有參函式 138
8.1.6 函式參數實例 138
8.2 自定義函式 140
8.2.1 自定義函式的編寫 140
8.2.2 函式中調用函式 141
8.2.3 函式聲明 143
8.2.4 遞歸函式 144
8.2.5 main函式的參數
argc與argv 145
8.3 函式與指針 145
8.3.1 值調用與引用調用 146
8.3.2 引用調用與指針 146
8.3.3 指針參數實例 147
8.3.4 自定義函式中指針
使用實例 148
8.3.5 數組作為參數 149
8.3.6 數組作為函式參數
實例 150
8.4 返回值 151
8.4.1 函式返回值的類型 151
8.4.2 函式返回指針 152
8.4.3 函式返回指針實例 153
8.4.4 函式返回結果到參數 154
8.5 庫函式 154
8.5.1 庫函式的種類 154
8.5.2 庫函式包含檔案 155
8.5.3 頭檔案使用實例 156
8.6 小結 156
8.7 小測試 156
第9章 字元與字元串處理 158
9.1 字元測試函式介紹 158
9.1.1 數字或字母測試
函式isalnum() 158
9.1.2 字母測試函式
isalpha() 159
9.1.3 可列印字元測試
函式isgraph() 160
9.1.4 大小寫字母測試函式
islower()和isupper() 160
9.1.5 數字測試函式
isdigit() 161
9.1.6 符號測試函式
ispunct() 162
9.1.7 其他字元測試函式 163
9.2 字元測試函式綜合實例 163
9.2.1 統計字元串中各類
字元的個數 163
9.2.2 判斷電話號碼與姓名
是否正確 165
9.3 字元串轉換 167
9.3.1 C程式中的字元串 167
9.3.2 字元串轉換成浮點型
函式atof() 167
9.3.3 字元串轉換成整型
函式atoi() 168
9.3.4 字元串轉換成長整型
函式atol() 169
9.3.5 將浮點型數轉換成
字元串函式ecvt() 170
9.3.6 字母的大小寫轉換
函式tolower()和
toupper() 170
9.3.7 其他字元串轉換
函式 171
9.4 字元串比較 172
9.4.1 字元串比較函式
bcmp() 172
9.4.2 字元串大小比較
函式memcmp() 173
9.4.3 忽略大小寫比較字元串
函式strncasecmp() 174
9.5 字元串複製 175
9.5.1 字元串複製函式
bcopy() 175
9.5.2 字元串複製
函式memccpy() 175
9.5.3 字元串複製函式
strcpy() 176
9.5.4 字元串複製函式
strncpy() 177
9.6 字元串的清理與填充 177
9.6.1 字元串清理函式
bzero() 177
9.6.2 字元串填充函式
memset() 178
9.7 字元串查找 179
9.7.1 字元串查找函式index()
與rindex() 179
9.7.2 字元串查找函式
memchr() 180
9.7.3 字元串查找函式
strchr()與strrchr() 180
9.8 字元串的連線與分割 181
9.8.1 字元串連線函式
strcat() 181
9.8.2 字元串分割函式
strtok() 182
9.9 其他字元串函式 182
9.9.1 字元串長度函式
strlen() 183
9.9.2 允許出現字元查找
函式strspn() 183
9.9.3 不允許出現字元查找
函式strcspn() 184
9.10 小結 185
9.11 小測試 185
第10章 結構體 186
10.1 結構體操作 186
10.1.1 對結構體的理解 186
10.1.2 結構體的定義 186
10.1.3 結構體的訪問 188
10.1.4 結構體數組 189
10.1.5 結構體使用實例 190
10.2 結構體與指針 191
10.2.1 結構體指針的定義 192
10.2.2 結構體指針的訪問 192
10.2.3 結構體作為函式的
參數 193
10.2.4 結構體指針作為函式
的參數 195
10.2.5 結構體作為函式的
返回值 196
10.2.6 結構體指針作為函式
的返回值 197
10.3 小結 199
10.4 小測試 199
第11章 時間函式 200
11.1 常用的時間函式 200
11.1.1 返回時間函式 200
11.1.2 取當前時間函式 201
11.1.3 字元串格式時間
函式 203
11.1.4 另一種字元串格式
時間函式 203
11.1.5 取得當地時間函式 204
11.1.6 將時間轉換成秒數
函式 205
11.1.7 取得當前時間函式 206
11.1.8 設定當前時間函式 207
11.2 時間函式使用實例 208
11.2.1 運行程式所需要的
時間 208
11.2.2 兩次輸入之間的時間
間隔 209
11.2.3 設定系統時間 210
11.3 小結 211
11.4 小測試 211
第12章 C語言的編程規範 212
12.1 命名規範 212
12.2 格式規範 214
12.3 函式規範 215
12.4 其他規範 216
第3篇 Linux系統編程
第13章 Shell編程 218
13.1 bash的使用 218
13.1.1 bash的內部命令與
外部命令 218
13.1.2 命令補齊功能 218
13.1.3 命令通配符 219
13.1.4 使用命令的歷史
記錄 219
13.1.5 命令別名 220
13.2 Shell程式的基本結構 220
13.3 局部變數 221
13.4 環境變數 221
13.4.1 查看環境變數 222
13.4.2 訪問環境變數 222
13.4.3 定義環境變數 222
13.4.4 在系統配置檔案中
定義環境變數 222
13.4.5 位置變數 223
13.5 Shell運算符 224
13.5.1 變數賦值 224
13.5.2 算術運算符 224
13.6 輸入和輸出 225
13.6.1 echo命令輸出結果 226
13.6.2 read命令讀取信息 227
13.6.3 檔案重定向 228
13.7 引號的使用方法 229
13.7.1 雙引號 229
13.7.2 單引號 230
13.7.3 反引號 230
13.7.4 反斜線 230
13.8 測試語句 230
13.8.1 檔案狀態測試 231
13.8.2 數值測試 231
13.8.3 字元串測試 232
13.8.4 邏輯測試 233
13.9 流程控制結構 233
13.9.1 if語句 233
13.9.2 if語句套用實例 234
13.9.3 for語句 236
13.9.4 for循環套用實例 236
13.9.5 until循環 238
13.10 Shell編程實例 238
13.10.1 程式功能 239
13.10.2 編寫程式代碼 239
13.11 小結 240
13.12 小測試 240
第14章 目錄與檔案 242
14.1 檔案操作許可權 242
14.2 錯誤處理與錯誤號 243
14.2.1 對錯誤定義的理解 243
14.2.2 用錯誤常數顯示錯誤
信息 244
14.2.3 用錯誤號顯示錯誤
信息 245
14.3 創建與刪除目錄 245
14.3.1 創建目錄函式
mkdir() 246
14.3.2 刪除目錄函式
rmdir() 247
14.4 檔案的創建與刪除 248
14.4.1 創建檔案函式
creat() 248
14.4.2 刪除檔案函式
remove() 249
14.4.3 建立臨時檔案
函式mkstemp() 251
14.5 檔案的打開與關閉 252
14.5.1 打開檔案函式
open() 252
14.5.2 檔案打開方式的
設定 252
14.5.3 打開檔案的許可權 253
14.5.4 檔案打開實例 253
14.5.5 關閉檔案函式
close() 254
14.6 檔案讀寫 256
14.6.1 寫入檔案函式
write() 256
14.6.2 讀取檔案函式read() 257
14.6.3 檔案讀寫位置的
移動 258
14.6.4 將緩衝區數據寫入
磁碟函式sync() 260
14.6.5 將緩衝區數據寫入
磁碟函式fsync() 261
14.7 檔案鎖定 262
14.7.1 對檔案鎖定的理解 263
14.7.2 檔案鎖定函式flock() 263
14.8 檔案的移動與複製 265
14.8.1 檔案移動函式
rename() 265
14.8.2 rename()函式使用
實例 265
14.8.3 檔案複製實例 266
14.9 小結 268
14.10 小測試 268
第4篇 Linux網路編程
第15章 網路編程 269
15.1 網路編程的基本概念 269
15.1.1 IP位址 269
15.1.2 連線埠 270
15.1.3 域名 270
15.1.4 TCP與UDP 270
15.2 套接字 271
15.2.1 什麼是套接字 271
15.2.2 套接字相關的數據
類型 271
15.2.3 套接字類型 272
15.3 域名與IP位址 272
15.3.1 用域名取得主機的IP
地址 272
15.3.2 用IP位址返回域名 274
15.4 網路協定 275
15.4.1 由協定名稱取得協定
數據 275
15.4.2 由協定編號取得協定
信息 276
15.4.3 取得系統支持的所有
協定 277
15.5 網路服務 278
15.5.1 取得系統支持的網路
服務 278
15.5.2 用名稱取得系統支持
的服務 279
15.5.3 由連線埠取得服務
名稱 281
15.6 網路IP位址的轉換 282
15.6.1 將網路地址轉換成長
整型數 282
15.6.2 將長整型IP位址轉換
成網路地址 283
15.6.3 主機字元順序與網路
字元順序的轉換 284
15.7 錯誤處理 285
15.7.1 herror()函式顯示
錯誤 285
15.7.2 捕獲錯誤編號 285
15.8 小結 286
15.9 小測試 286
第16章 無連線的套接字通信 287
16.1 socket套接字 287
16.1.1 建立socket 287
16.1.2 取得socket狀態 289
16.1.3 設定socket狀態 290
16.2 面向無連線的套接字通信 291
16.2.1 工作流程 292
16.2.2 信息傳送函式
sendto() 292
16.2.3 信息接收函式
recvfrom() 293
16.3 無連線的套接字通信實例 294
16.3.1 無連線的套接字通信
客戶端 294
16.3.2 無連線的套接字通信
伺服器 295
16.3.3 測試UDP通信程式 297
16.4 小結 298
16.5 小測試 298
第17章 面向連線的套接字通信 299
17.1 面向連線的套接字通信工作
流程 299
17.2 綁定連線埠 299
17.2.1 綁定連線埠函式
bind() 299
17.2.2 使用bind()函式綁定
連線埠實例 301
17.3 監聽與連線 302
17.3.1 等待監聽函式
listen() 302
17.3.2 listen()函式使用
實例 303
17.3.3 接受連線函式
accept() 304
17.3.4 accept()函式使用
實例 304
17.3.5 請求連線函式
connect() 306
17.3.6 connect()函式使用
實例 307
17.4 數據的傳送與接收 308
17.4.1 數據接收函式
recv() 308
17.4.2 recv()函式使用實例 309
17.4.3 數據傳送函式
send() 310
17.4.4 數據傳輸函式
write()與read() 311
17.4.5 read()函式接收數據
實例 311
17.5 面向連線的套接字通信
實例 313
17.5.1 伺服器程式 313
17.5.2 客戶端程式 316
17.5.3 實例程式測試 317
17.6 小結 318
17.7 小測試 318
第5篇 Linux C項目實戰
第18章 電話本項目的開發 319
18.1 程式功能分析 319
18.2 程式的函式 319
18.3 包含檔案 320
18.4 數據的定義 320
18.5 選單函式 321
18.6 顯示電話信息函式 322
18.7 添加電話號碼函式 322
18.8 按姓名查找函式 322
18.9 刪除電話號碼函式 323
18.10 保存到檔案函式 324
18.11 從檔案導入信息函式 324
18.12 主函式 325
18.13 程式的運行 326
18.14 小結 327