Linux 操作系統應用編程
內容描述
本書從原理性和實用性出發,從初學者的角度全面而詳細介紹了Linux操作系統的基本概念和常用命令的使用。闡述的內容都是針對初學者完成日常工作所必需的各個方面,包括Linux的基本概念、常用命令、文件系統、屏幕編輯器、進程管理、shell程序設計、數據管理工具、集成編譯工具、系統調用接口與應用程序開發、進程間通信和線程控制等,最後給出了一組綜合設計實驗。本書各章都有大量的實例講述,各章末尾也有練習題,可幫助讀者由淺入深、循序漸進地學習Linux操作系統,理論聯系實際,快速上手實踐,逐步達到熟練掌握Linux操作系統的使用技巧以及提高應用開發能力的目的。
目錄大綱
第1章Linux操作系統基礎1
1.1引言1
1.1.1什麼是Linux 1
1.1.2 Linux的發展歷程1
1.1.3 Linux操作系統的組成2
1.1.4 Linux操作系統的版本4
1.2 Linux操作系統的運行模式與功能特徵5
1.2.1 Linux操作系統的運行模式5
1.2.2 Linux操作系統的功能特徵5
1.3用戶與登錄6
1. 3.1 Linux用戶管理6
1.3.2登錄系統7
1.4 Linux命令基礎7
1.4.1簡單命令7
1.4.2通用命令格式8
1.4.3命令行更正和程序終止8
1.4.4聯機手冊8
1.5文件與進程8
1.6練習9
第2章Linux文件系統11
2.1文件系統的結構11
2.1.1組織結構11
2.1.2起始目錄與當前工作目錄11
2.1.3路徑名12
2.1.4標準目錄與文件12
2.2文件的定義與分類13
2.2.1文件的定義13
2.2.2文件的分類13
2.3目錄操作命令14
2.3.1創建目錄14
2.3.2刪除目錄15
2.3.3修改當前目錄15
2.3.4查看當前目錄15
2.3.5列出指定目錄15
2.4文件操作命令17
2.4.1顯示文件內容17
2.4.2複製文件17
2.4.3移動文件18
2.4.4刪除文件18
2.4.5打印文件18
2.4.6格式化輸出文件18
2.4.7鏈接文件18
2.4.8基本實用程序19
2.5文件的權限管理20
2.5.1文件的權限種類20
2.5.2文件權限的檢測與修改21
2 .5.3文件所有權的修改21
2.6文件名置換21
2.7練習22
第3章vi編輯器23
3.1 vi編輯器概述23
3.1.1 vi編輯器的基本工作流程23
3 .1.2 vi編輯器的工作模式23
3.2 vi編輯器的屏編工作模式24
3.2.1命令模式24
3.2.2文本輸入模式24
3.3屏編vi的使用方法24
3.3.1 vi的啟動與退出24
3.3.2 vi的常用命令25
3.4行編edit的使用方法26
3.4.1進入行編26
3.4.2退出行編27
3.4.3行編的常用命令27
3 .5 vi命令的選項28
3.6練習28
第4章Shell的交互功能和進程管理30
4.1 Shell的功能與分類30
4.1.1 Shell的功能簡介30
4.1.2 Shell的分類30
4.1.3 Shell的啟動和執行過程31
4.1.4 Shell可識別的命令類型32
4.2 Shell的內部命令34
4.3標準輸入/輸出重定向36
4.3.1標準輸入/輸出36
4.3.2標準輸入重定向37
4.3.3標準輸出重定向38
4.3.4標準錯誤輸出重定向39
4.3.5管道40
4.4 Shell的變量40
4. 4.1 Shell的環境變量40
4.4.2 Shell的系統變量43
4.4.3 Shell的用戶自定義變量45
4.4.4清除變量45
4.5 Shell的引用符45
4.5. 1雙引號的使用46
4.5.2單引號的使用46
4.5.3反撇號的使用47
4.5.4花括號的使用47
4.6進程的狀態和監控47
4.6.1進程的狀態及其轉換48
4.6.2獲取進程狀態信息命令ps 49
4.6.3暫停進程運行命令sleep 50
4.6.4作業控制命令fg和jobs 50
4.6.5終止進程運行命令kill 52
4.7練習54
第5章Shell程序設計55
5.1 Shell編程語言簡介55
5.1.1編寫Shell腳本的基本過程55
5.1.2執行Shell腳本56
5.2 Shell語句的分類57
5.2.1說明性語句58
5.2. 2功能性語句58
5.2.3結構性語句61
5.3 Shell的結構性語句61
5.3.1測試語句test 61
5.3.2條件語句if…then…fi 62
5.3.3條件語句if…then…else…fi 63
5.3.4多路分支語句case…esac 64
5.3.5循環語句for…do…done 65
5.3.6循環語句while…do…done 66
5 .3.7循環語句until…do…done 67
5.3.8循環控制語句continue和break 68
5.4 Shell函數69
5.5命令組的應用規則與限制71
5.5.1 Shell命令組的標準輸出重定向71
5.5.2 Shell命令組的標準輸入重定向72
5.5.3 while命令組的循環條件74
5.6練習74
第6章數據查找和篩選工具76
6.1正則表達式76
6.1.1正則表達式的定義76
6.1.2正則表達式中的元字符77
6.1.3正則表達式應用示例77
6.2流編輯器sed簡介78
6.2.1什麼是流編輯器78
6.2.2 sed命令的基本格式79
6.2.3 sed命令中的行編命令基本格式79
6.2.4 sed命令的出錯信息和退出狀態80
6.2.5 sed命令應用示例81
6.3數據處理器awk簡介82
6.3.1數據記錄和數據域82
6.3.2 awk命令的基本格式83
6.3.3格式化輸出84
6.3.4 awk的命令文件85
6.4練習85
第7章多模塊鏈接與集成編譯工具GNU make 87
7.1多模塊程序設計87
7.1.1多模塊程序的常見自動構建系統91
7.1.2基於GNU make的構建系統93
7.2 make程序的基本功能和運行流程95
7.2.1 GNU make是如何工作的95
7.2.2指定Makefile 95
7.2.3 Makefile概述95
7.2.4指定目標96
7.2.5控制make執行的函數96
7.2.6 make支持的選項及退出碼97
7. 3 Makefile規則98
7.3.1規則的格式99
7.3.2在規則中使用通配符100
7.3.3文件搜尋100
7.3.4偽目標101
7.3.5自動生成依賴性102
7.4在Makefile中執行命令104
7.4.1顯示命令104
7.4.2命令執行順序104
7.4.3命令出錯105
7.4.4嵌套執行make 105
7.5變量定義和使用106
7.5.1變量的基礎107
7.5.2變量中的變量107
7.5.3使用條件判斷109
7.6練習110
第8章文件管理與輸入/輸出調用112
8.1虛擬文件系統112
8.1.1基本概念112
8.1.2文件系統在存儲設備上的表現形式113
8.1.3虛擬文件系統涉及的內核對象114
8.1.4內核對象間的聯繫118
8.1 .5虛擬文件系統的典型系統調用119
8.2文件I/O 123
8.2.1打開文件124
8.2.2創建文件125
8.2.3關閉文件125
8.2.4文件讀寫位置125
8.2.5讀文件126
8.2.6寫文件127
8.3文件和目錄的屬性與權限127
8.3.1獲取當前工作目錄路徑128
8.3.2讀取目錄文件128
8.3.3獲取與解析文件屬性130
8.3.4文件和目錄訪問權限133
8.3.5創建與刪除目錄133
8.4練習134
第9章進程控制136
9.1運行環境和進程的標識136
9.1.1進程基本概念136
9.1.2進程描述符136
9.2進程的創建和退出140
9.2.1進程的創建140
9.2.2進程的退出145
9. 3進程的等待與睡眠147
9.3.1 wait函數147
9.3.2 waitpid函數148
9.4進程的執行150
9.4.1 exec函數簇150
9.4.2進程的執行與文件共享153
9.5進程的屬性修改156
9.5.1進程USERID的修改156
9.5.2進程GROUPID的修改158
9.6進程的調度158
9.6.1基本概念158
9.6.2進程調度的時機與方式160
9.6.3常用的進程調度算法161
9.6.4進程調度策略165
9.6.5主要函數167
9.7練習175
第10章進程間通信177
10.1管道177
10.1.1基本概念177
10.1.2使用管道178
10.1.3創建和關閉管道182
10.1.4從管道中讀取數據和向管道中寫入數據183
10.2信號燈187
10.2.1信號燈概述187
10.2.2信號燈與內核187
10.2.3操作信號燈188
10.2.4信號燈限制190
10.2.5競爭問題191
10.3消息隊列191
10.3.1什麼是消息隊列191
10.3.2消息隊列類型192
10.3.3消息隊列相關函數194
10.3.4如何利用消息隊列進行客戶端和服務器的通信196
10.4共享存儲199
10.4.1什麼是共享存儲199
10.4.2獲得共享存儲函數200
10.4.3刪除共享存儲段203
10.4.4如何將進程掛接到共享存儲上203
10.4.5如何查看系統的共享存儲資源204
10.4.6信號量205
10.5練習209
第11章線程及線程控制211
11.1什麼是線程211
11.2線程的創建和終止212
11.2.1線程的創建212
11.2. 2線程的終止213
11.3線程的同步與互斥214
11.3.1基本概念214
11.3.2死鎖214
11.3.3互斥量216
11.4線程的屬性與限制218
11 .4.1線程的屬性218
11.4.2線程的限制219
11.5 Linux操作系統下的多線程編程220
11.5.1概念介紹220
11.5.2多線程的實現220
11.5 .3線程之間的數據處理222
11.6練習229
第12章綜合實驗230
12.1設備驅動程序與設備文件230
12.2 Linux操作系統設備類型231
12.3 Linux操作系統設備驅動的特性233
12.4 Linux操作系統設備驅動程序的組成部分233
12.5 Linux內核模塊與設備驅動程序開發實驗234
12.5.1實驗目的234
12.5.2實驗原理234
12.5.3實驗步驟236
12.6 Linux操作系統字符設備驅動程序開發實驗237
12.6.1實驗目的237
12.6.2實驗原理237
12.6.3實驗步驟242
12.7 Linux操作系統塊設備驅動程序開發實驗243
12.7.1實驗目的243
12 .7.2實驗原理243
12.7.3實驗步驟250
參考文獻251
作者介紹
本書編寫組成員現為電子科技大學信息與軟件工程學院操作系統課程組教師,長期從事與操作系統密切相關的教學、科研、應用開發和社會服務等方面的工作,主要研究領域包括操作系統、大型機系統、數據處理、雲計算、嵌入式系統等。
編寫組成員曾先後參加完成了國家“六五”“七五”和“八五”科技攻關項目,對UNIX操作系統的內核有深入的了解,屬於國內最早一批從事該領域研究的人員。此後又參加完成多項涉及金融、航空、通信、鐵路、地質和生產製造等領域的應用開發工作,在UNIX/Linux操作系統應用方面積累了豐富的經驗。
編寫組成員長期講授“操作系統基礎”“UNIX/Linux操作系統內核結構”“UNIX/Linux操作系統基礎”“基於UNIX/Linux操作系統的編程技術”和“嵌入式系統”等課程,具有豐富的操作系統類課程的教學經驗。
2004年編寫組成員參與的“計算機操作系統系列課程改革與建設”獲電子科技大學優秀教學成果獎;2005年“計算機操作系統”課程被評為四川省精品課程;2006年“計算機操作系統”課程被評為精品課程。多人次獲得電子科技大學優秀主講教師、專業核心課程骨干教師等稱號。
編寫組成員參與完成了教改項目“大型主機應用型創新人才培養模式的研究與實踐”,參與組建了國內高校第一個大型主機系,率先系統地開設了“大型機操作系統”“ z/Linux操作系統”“AIX操作系統”“大型機系統”和“大型機應用基礎”等課程,並承擔完成了多門“教育部-IBM精品課程”建設任務。