Linux編程

Linux編程

《Linux編程》是2019年1月清華大學出版社出版的圖書,作者是徐欽桂、徐治根、黃培燦、謝偉鵬。

基本介紹

  • 中文名:Linux編程
  • 作者:徐欽桂、徐治根、黃培燦、謝偉鵬
  • 出版社:清華大學出版社
  • 出版時間:2019年1月
  • 定價:69 元
  • ISBN:9787302514473
內容簡介,圖書目錄,

內容簡介

《Linux編程》全面講述Linux環境下基於C語言的系統編程技術以及相關的理論原理,主要內容包括Linux基本操作、Shell編程、系統I/O編程、檔案系統、進程控制原理、多進程並發編程、信號機制、執行緒概念、多執行緒並發編程、同步與互斥的概念、基於信號量與P/V操作解決同步及互斥問題、經典同步問題、網路編程、並發網路套用編程等,《Linux編程》安排有大量的程式實例、課後作業,還設計了很多示意圖,以幫助讀者理解、運用書中介紹的概念、原理和技術。
Linux編程
本書
《Linux編程》內容豐富、結構合理、思路清晰、語言簡明流暢、示例翔實,可作為高等院校計算機類專業作業系統、Linux編程等課程的教材,還可作為C程式設計、嵌入式開發的參考資料。

圖書目錄

目 錄
第1章 Linux系統檔案操作 1
1.1 UNIX/Linux作業系統簡介 1
1.1.1 UNIX簡介 1
1.1.2 Linux概述 2
1.2 Linux系統結構 3
1.3 Linux系統的安裝、啟動、登錄、
用戶界面與命令格式 5
1.3.1 在VMware中用快照快速安裝
Linux虛擬機系統 5
1.3.2 啟動與登錄Linux 5
1.3.3 三種系統操作界面 6
1.3.4 Linux命令格式和說明 7
1.4 Linux檔案、操作及檔案
屬性、許可權 9
1.4.1 路徑與操作 9
1.4.2 檔案屬性與許可權 13
1.4.3 Linux檔案操作命令 14
1.4.4 修改檔案屬性 19
1.4.5 使用通配符(“*”和“?”)匹配
檔案名稱 21
1.4.6 檔案的壓縮與打包 22
1.5 輸入輸出重定向和管道 23
1.6 本章小結 24
課後作業 25
第2章 Linux Shell編程 26
2.1 Shell編程基本概念 26
2.1.1 Shell腳本程式的結構 27
2.1.2 Shell腳本的創建與執行方法 27
2.1.3 Shell變數與賦值表達式 28
2.1.4 Shell輸入輸出語句 29
2.1.5 終止腳本執行和終止狀態 29
2.2 Shell數學運算與字元串處理 32
2.2.1 Shell數學運算 32
2.2.2 Shell字元串處理 32
2.3 Shell條件與if控制結構 33
2.3.1 if語句 34
2.3.2 test命令 36
*2.3.3 複合條件檢查 39
2.3.4 case語句 40
2.4 循環結構 40
2.4.1 for循環結構 41
2.4.2 while循環結構 42
2.4.3 until循環結構 43
2.5 Linux全局變數和環境變數 44
2.5.1 Linux Shell層次結構 44
2.5.2 Shell全局變數與局部變數 45
2.5.3 Linux環境變數 46
*2.5.4 Shell變數的刪除和唯讀設定
方法 48
2.5.5 Shell數組的定義和使用方法 48
2.6 Linux檔案I/O、I/O重定向和管道 49
2.6.1 標準檔案描述符 49
2.6.2 I/O重定向 50
2.6.3 管道 51
2.6.4 從檔案獲取輸入 52
*2.8 Shell函式 53
*2.8.1 函式的基本用法 53
*2.8.2 向函式傳遞參數 54
2.9 本章小結 54
課後作業 55
第3章 Linux C編程環境 57
3.1 Linux C程式的編譯與執行 57
3.1.1 Linux環境下C程式的編譯與
執行過程 57
3.1.2 編譯多個源檔案 61
3.1.3 使用頭檔案和庫檔案 62
*3.1.4 使用gcc創建自定義庫檔案 65
3.1.5 gcc常用命令選項及用法 67
3.2 Linux常用自帶系統庫 68
3.2.1 數學函式 68
3.2.2 環境控制函式 69
3.2.3 字元串處理函式 69
3.2.4 時間函式 70
3.2.5 數據結構算法函式 71
3.3 診斷和處理Linux編程錯誤 75
3.3.1 診斷和處理編譯錯誤 75
3.3.2 處理系統調用失敗 80
3.3.3 用斷言檢查程式狀態錯誤 84
*3.4 用GDB/ddd調試器診斷運行
錯誤 85
*3.4.1 用GDB調試程式運行錯誤的
實例 85
*3.4.2 常用GDB命令 88
*3.4.3 用ddd/GDB調試程式 89
3.5 命令行參數和環境變數的
讀取方法 90
3.5.1 環境變數及其使用方法 90
3.5.2 命令行參數的使用方法 91
*3.6 make工具 92
*3.6.1 引入make工具的原因 92
*3.6.2 用makefile描述源檔案間的
依賴關係 93
*3.6.3 引入偽目標以增強makefile功能 94
*3.6.4 用變數最佳化makefile檔案 95
3.6.5 用預定義變數和隱含規則
簡化makefile檔案 96
3.7 本章小結 97
課後作業 98
第4章 輸入輸出與檔案系統 101
4.1 檔案系統層次結構 101
4.1.1 檔案系統層次結構簡介 101
4.1.2 檔案I/O庫函式 102
4.2 系統I/O概念與檔案操作編程 103
4.2.1 UNIX I/O 103
4.2.2 檔案打開和關閉函式 104
4.2.3 檔案讀寫編程與讀寫性能
改進方法 107
4.2.4 檔案定位與檔案內容隨機讀取 111
4.2.5 任意類型數據的檔案讀寫 113
4.2.6 用檔案讀寫函式操作設備 115
4.3 核心檔案I/O數據結構及套用 117
4.3.1 檔案描述符和標準輸入輸出 117
4.3.2 檔案打開過程 118
4.3.3 核心檔案I/O數據結構共享原理 119
4.3.4 dup和I/O重定向 120
*4.4 用RIO包增強UNIX I/O功能 124
*4.4.1 RIO的無緩衝的輸入輸出函式 124
*4.4.2 RIO帶緩衝的輸入函式 125
4.5 檔案組織 128
4.5.1 檔案屬性、項與 128
4.5.2 邏輯地址與物理地址 129
4.5.3 創建和讀寫檔案 130
4.5.4 一體化檔案和分解 132
4.5.5 Linux分解式管理 133
4.5.6 讀取檔案元數據 135
4.5.7 檔案搜尋和當前 136
4.6 檔案物理結構 137
4.6.1 外存組織方式 137
4.6.2 管理磁碟空閒盤塊 141
4.6.3 檔案系統結構格式 143
4.7 本章小結 144
課後作業 144
第5章 進程管理與控制 151
5.1 邏輯控制流和並發流 151
5.2 進程的基本概念 153
5.2.1 進程概念、結構與描述 153
5.2.2 進程的基本狀態及狀態轉換 155
5.2.3 對進程PCB進行組織 156
5.2.4 進程實例 157
5.2.5 操作進程的工具 158
5.2.6 編程讀取進程屬性 160
*5.2.7 進程許可權和檔案特殊許可權位 161
5.3 進程控制 163
5.3.1 創建進程 163
5.3.2 多進程並發特徵與執行流程
分析 170
5.3.3 進程的終止與回收 173
5.3.4 讓進程休眠 177
5.3.5 載入並運行程式 178
5.3.6 fork和exec函式的套用實例 180
*5.3.7 非本地跳轉 184
5.3.8 進程與程式的區別 186
5.4 信號機制 186
5.4.1 信號概念 186
5.4.2 信號術語 188
5.4.3 傳送信號的過程 188
5.4.4 接收信號的過程 191
*5.4.5 信號處理問題 193
*5.4.6 可移植信號處理 197
*5.4.7 信號處理引起的競爭 198
*5.5 守護進程 201
5.6 進程、核心與系統調用間的
關係 203
5.7 本章小結 204
課後作業 205
第6章 執行緒控制與同步互斥 211
6.1 執行緒概念 211
6.1.1 什麼是執行緒 211
6.1.2 執行緒執行模型 212
6.1.3 多執行緒套用 213
6.1.4 第一個執行緒 213
6.2 多執行緒並發特徵與編程方法 215
6.2.1 Pthreads執行緒API 215
6.2.2 多執行緒並發特徵 217
6.2.3 執行緒間數據傳遞 219
6.3 多執行緒程式中的共享變數 221
6.3.1 進程的用戶地址空間結構 222
6.3.2 變數類型和運行實例 223
6.3.3 共享變數的識別 223
6.4 執行緒同步與互斥 224
6.4.1 變數共享帶來的同步錯誤 224
6.4.2 臨界資源、臨界區、進程(執行緒)
互斥問題 229
6.4.3 用信號量與P/V操作保證臨界區
互斥執行 230
6.4.4 用信號量及P/V操作解決資源
調度問題 233
6.4.5 用Pthreads同步機制實現執行緒的
互斥與同步 237
6.4.6 共享變數的類型與同步編程小結 242
6.5 經典同步問題 242
6.5.1 生產者/消費者問題 243
6.5.2 讀者/寫者問題 245
*6.6 其他同步機制 246
*6.6.1 AND型信號量 246
*6.6.2 信號量集 247
*6.6.3 條件變數 248
*6.6.4 管程 250
*6.7 多執行緒並發的其他問題 251
*6.7.1 執行緒安全 251
*6.7.2 可重入性 253
*6.7.3 執行緒不安全庫函式 254
*6.7.4 執行緒競爭 254
6.8 使用多執行緒提高並行性 257
6.8.1 順序程式、並發程式和並行
程式 257
6.8.2 並行程式套用示例 258
6.8.3 使用執行緒管理多個並發活動 262
6.9 本章小結 264
課後作業 265
第7章 進程間通信 273
7.1 管道通信 273
7.1.1 什麼是管道 273
7.1.2 命名管道FIFO及套用編程 274
*7.1.3 利用FIFO傳輸任意類型數據 277
7.1.4 無名管道PIPE及套用 278
7.1.5 使用PIPE實現管道命令 281
*7.1.6 使用FIFO的客戶端/伺服器
應用程式 283
7.2 訊息佇列 286
7.2.1 訊息佇列的結構 286
7.2.2 訊息佇列函式 287
7.2.3 訊息佇列通信示例 289
7.2.4 通過訊息佇列傳輸任意類型的
數據 292
7.3 共享記憶體 294
7.3.1 基於共享記憶體進行通信的基本
原理 294
7.3.2 共享記憶體相關API函式 295
7.3.3 共享記憶體通信驗證 296
7.3.4 共享記憶體通信示例 299
7.4 用IPC信號量實施進程同步 302
7.4.1 IPC信號量集結構體及操作函式 302
7.4.2 IPC用信號量集創建自定義P/V
操作函式館 304
7.5 本章小結 305
課後作業 306
第8章 網路編程 308
8.1 客戶端/伺服器編程模型 308
8.2 網路通信結構和Internet連線 309
8.2.1 網路通信結構 309
8.2.2 Internet連線 310
8.3 套接字地址與設定方法 311
8.3.1 IP位址和位元組序 311
8.3.2 Internet域名 313
8.3.3 套接字地址結構 316
8.4 套接字接口與TCP通信編程
方法 316
8.4.1 socket函式 317
8.4.2 connect函式 317
8.4.3 open_client_sock函式 318
8.4.4 bind函式 319
8.4.5 listen函式 319
8.4.6 open_listen_sock函式 319
8.4.7 accept函式 320
8.4.8 send/recv函式 321
8.5 網路通信套用示例toggle 321
8.6 Web編程基礎 324
8.6.1 Web基礎 324
8.6.2 Web內容 325
8.6.3 HTTP事務 326
8.7 小型Web伺服器: weblet.c 328
8.7.1 weblet的主程式 328
8.7.2 HTTP事務處理 329
8.7.3 生成錯誤提示頁面 331
8.7.4 HTTP額外請求報頭的讀取 332
8.7.5 URI解析 332
8.7.6 服務靜態內容 333
8.7.7 測試靜態網頁功能 334
8.7.8 服務動態內容 335
8.7.9 實現CGI程式 336
8.7.10 測試動態網頁功能 337
8.7.11 關於Web伺服器的其他問題 339
8.8 本章小結 339
課後作業 340
第9章 並發網路通信編程實例 341
9.1 基於多進程的並發編程 341
*9.2 基於I/O多路復用的並發編程 344
*9.2.1 利用I/O多路復用等待多種I/O事件 345
*9.2.2 基於I/O多路復用實現事件驅動
伺服器 346
9.3 基於執行緒的並發編程 350
9.3.1 基於執行緒的並發toggle伺服器 350
9.3.2 基於預執行緒化的並發伺服器 351
9.4 本章小結 354
課後作業 354
參考文獻 356

相關詞條

熱門詞條

聯絡我們