Linux C與C++ 一線開發實踐

《Linux C與C++ 一線開發實踐》是2018年12月1日清華大學出版社出版的圖書,作者是朱文偉、李建英。

出版信息,內容簡介,目 錄,

出版信息

Linux C與C++ 一線開發實踐
作者:朱文偉 李建英
  定價:129元
印次:1-1
ISBN:9787302512554
出版日期:2018.12.01
印刷日期:2018.11.26

內容簡介

Linux C/C++編程在Linux應用程式開發中占有重要的地位,掌握這項技能將在就業競爭中立於不敗之地。本書是一本針對初、中級讀者的、貼近軟體公司一線開發實踐的書。本書共分為19章,內容包括Linux概述、搭建開發環境、語言基礎、檔案編程、多進程編程、進程間通信、Web編程、多執行緒編程、Linux下的庫、TCP/IP協定基礎、網路編程、網路性能測試工具iPerf簡析、版本控制和SVN工具、C++跨平台開發以及安全編程等。本書適合想全面學習Linux環境下C/C++語言編程的讀者,並可作為國中級開發人員的案頭查閱與參考手冊,也適合作為高等院校和培訓學校相關專業師生的教學參考書。

目 錄

第1章 Linux概述 1
1.1 什麼是Linux 1
1.2 Linux的簡史 2
1.3 Linux和Windows的比較 4
1.4 Linux主要套用領域 4
1.5 Linux的版本 5
1.6 使用哪個版本的Linux進行學習 5
1.7 Linux的特點 5
1.8 如何學習Linux 6
1.9 命令行還是圖形界面 6
1.10 計算機啟動的基本過程 6
1.10.1 按下電源 7
第1章 Linux概述 1
1.1 什麼是Linux 1
1.2 Linux的簡史 2
1.3 Linux和Windows的比較 4
1.4 Linux主要套用領域 4
1.5 Linux的版本 5
1.6 使用哪個版本的Linux進行學習 5
1.7 Linux的特點 5
1.8 如何學習Linux 6
1.9 命令行還是圖形界面 6
1.10 計算機啟動的基本過程 6
1.10.1 按下電源 7
1.10.2 BIOS自檢 7
1.10.3 系統引導 8
1.10.4 實模式和保護模式 10
1.11 啟動核心 11
1.12 認識Shell 11
1.13 常見的Shell 11
1.14 圖形界面和字元界面的切換 12
1.14.1 在不退出X-Window的情況下切換到字元界面 12
1.14.2 強行退出X-Window進入文本模式 12
1.14.3 設定每次開機進入字元界面 13
1.14.4從字元界面進入圖形界面14
1.15Shell命令概述14
1.16環境變數14
第2章搭建LinuxC++開發環境16
2.1準備Linux虛擬機16
2.2連線Linux虛擬機20
2.2.1通過橋接模式連線虛擬機21
2.2.2主機模式24
2.2.3通過NAT模式連線虛擬機25
2.3通過終端工具連線Linux虛擬機27
2.4搭建Linux下的C++開發環境30
2.4.1非集成開發方式30
2.4.2集成開發方式31
2.5搭建Windows下的LinuxC++開發環境37
2.5.1搭建非集成式的Windows下的LinuxC++開發環境37
2.5.2搭建集成式的Windows下的LinuxC++開發環境39
2.6需要掌握的開發工具49
2.7vi編輯器的使用50
2.7.1vi編輯器概述50
2.7.2vi編輯器的工作模式50
2.7.3vi的基本操作51
2.7.4命令行模式下的基本操作51
2.7.5插入模式55
2.7.6末行模式操作55
2.8gcc編譯器的使用57
2.8.1gcc對C語言的編譯過程57
2.8.2gcc所支持的後綴名檔案62
2.8.3gcc的語法格式62
2.8.4gcc常見選項64
2.9g++的基本使用75
2.10gdb調試器的使用77
2.10.1為何要學習gdb調試器77
2.10.2gdb簡介77
2.10.3重要準備77
2.10.4啟動gdb77
2.10.5退出gdb78
2.10.6gdb的常用命令概述79
2.10.7file命令載入程式80
2.10.8list命令顯示原始碼80
2.10.9run命令運行程式83
2.10.10break命令設定斷點85
第3章C++語言基礎89
3.1C++基礎知識89
3.1.1C++程式結構89
3.1.2注釋91
3.1.3變數和數據類型92
3.1.4標識92
3.1.5基本數據類型93
3.1.6變數的定義和C++11中的auto94
3.1.7變數的範圍98
3.1.8變數初始化98
3.1.9常量99
3.1.10操作符/運算符103
3.1.11控制台互動110
3.2控制結構115
3.2.1條件結構115
3.2.2循環結構116
3.2.3分支控制和跳轉120
3.2.4選擇結構語句switch122
3.3函式123
3.4函式高級話題127
3.4.1參數按數值傳遞和按地址傳遞127
3.4.2函式重載130
3.4.3內聯函式131
3.4.4遞歸132
3.4.5函式的聲明133
3.5高級數據類型134
3.5.1數組134
3.5.2指針145
3.5.3動態分配記憶體155
3.5.4結構體159
3.5.5自定義數據類型165
3.6面向對象編程168
3.6.1類168
3.6.2構造函式和析構函式171
3.6.3構造函式重載173
3.6.4類的指針175
3.6.5由關鍵字struct和union定義的類176
3.6.6操作符重載176
3.6.7關鍵字this179
3.6.8靜態成員180
3.6.9類之間的關係182
3.6.10多態189
3.7C++面向對象小結195
3.8C++高級知識199
3.8.1模板199
3.8.2命名空間205
3.8.3異常處理209
3.8.4預處理指令213
3.8.5預定義宏215
3.8.6C++11中的預定義宏216
3.9字元串218
3.9.1字元串基礎218
3.9.2搜尋與查找227
3.10再論異常處理233
3.10.1基本概念233
3.10.2拋出異常234
3.10.3捕獲異常234
3.10.4C++標準異常235
3.10.5定義新的異常236
3.11再論函式模板237
3.12字元集239
3.12.1計算機上的3種字元集239
3.12.2查看Linux系統的字元集241
3.12.3修改Linux系統的字元集242
3.12.4Unicode編碼的實現242
3.12.5C運行時庫對Unicode的支持246
3.12.6C++標準庫對Unicode的支持247
3.12.7字元集相關實例248
第4章Linux檔案編程249
4.1檔案系統249
4.1.1基本概念249
4.1.2檔案系統層次結構標準249
4.2檔案的屬性信息250
4.3i節點251
4.3.1基本概念251
4.3.2i節點的內容251
4.3.3i節點的使用狀況253
4.4檔案類型254
4.4.1普通檔案255
4.4.2目錄255
4.4.3塊設備檔案256
4.4.4字元設備檔案257
4.4.5連結檔案257
4.5檔案許可權259
4.6Linux檔案I/O編程的基本方式260
4.7什麼是I/O260
4.8Linux系統調用下的檔案I/O編程261
4.8.1檔案描述符261
4.8.2打開或創建檔案262
4.8.3創建檔案263
4.8.4關閉檔案264
4.8.5讀取檔案中的數據266
4.8.6向檔案寫入數據268
4.8.7設定檔案偏移量269
4.8.8獲取檔案狀態271
4.8.9檔案鎖定272
4.8.10建立檔案和記憶體映射276
4.8.11mmap和共享記憶體對比279
4.9C++方式下的檔案I/O編程280
4.9.1流的概念280
4.9.2流的類庫280
4.9.3打開檔案281
4.9.4關閉檔案283
4.9.5寫入檔案283
4.9.6讀取檔案283
4.9.7檔案位置指針285
4.9.8狀態標誌符的驗證287
4.9.9讀寫檔案數據塊288
4.10檔案編程中的其他操作290
4.10.1獲取檔案有關信息290
4.10.2創建和刪除檔案目錄項293
第5章多進程編程296
5.1進程的基本概念296
5.2進程的描述296
5.2.1進程的標識符299
5.2.2PID檔案301
5.3進程的創建303
5.3.1使用fork創建進程303
5.3.2使用exec創建進程305
5.3.3使用system創建進程311
5.4進程調度312
5.5進程的分類315
5.5.1前台進程315
5.5.2後台進程315
5.6守護進程316
5.6.1守護進程的概念316
5.6.2守護進程的特點317
5.6.3查看守護進程317
5.6.4守護進程的分類318
5.6.5守護進程的啟動方式319
5.6.6編寫守護進程的步驟319
第6章Linux進程間的通信323
6.1信號323
6.1.1信號的基本概念323
6.1.2與信號相關的系統調用328
6.2管道336
6.2.1管道的基本概念336
6.2.2管道讀寫的特點337
6.2.3管道的局限性337
6.2.4創建管道函式pipe338
6.2.5讀寫管道函式read/write338
6.2.6等待子進程中斷或結束的函式wait338
6.2.7使用管道的特殊情況342
6.3訊息佇列342
6.3.1創建和打開訊息佇列函式msgget343
6.3.2獲取和設定訊息佇列的屬性函式msgctl343
6.3.3將訊息送入訊息佇列的函式msgsnd344
6.3.4從訊息佇列中讀取一條新訊息的函式msgrcv345
6.3.5生成鍵值函式ftok346
第7章C++Web編程354
7.1CGI程式的工作方式354
7.2架設Web伺服器Apache354
第8章多執行緒基本編程358
8.1使用多執行緒的好處358
8.2多執行緒編程的基本概念359
8.2.1作業系統和多執行緒359
8.2.2執行緒的基本概念359
8.2.3執行緒的狀態360
8.2.4執行緒函式361
8.2.5執行緒標識361
8.2.6C++多執行緒開發的兩種方式361
8.3利用POSIX多執行緒API函式進行多執行緒開發362
8.3.1執行緒的創建362
8.3.2執行緒的屬性367
8.3.3執行緒的結束379
8.3.4執行緒退出時的清理機會387
8.4C++11中的執行緒類392
8.4.1執行緒的創建393
8.4.2執行緒的標識符401
8.4.3當前執行緒this_thread402
第9章多執行緒高級編程406
9.1多執行緒的同步和異步406
9.2執行緒同步406
9.3利用POSIX多執行緒API函式進行執行緒同步411
9.3.1互斥鎖411
9.3.2讀寫鎖417
9.3.3條件變數424
9.4C++11/14中的執行緒同步431
9.5執行緒池434
9.5.1執行緒池的定義434
9.5.2使用執行緒池的原因435
9.5.3用C++實現一個簡單的執行緒池435
第10章Linux下的庫441
10.1庫的基本概念441
10.2庫的分類441
10.3靜態庫442
10.3.1靜態庫的基本概念442
10.3.2靜態庫的創建和使用442
10.4動態庫445
10.4.1動態庫的基本概念445
10.4.2動態庫的創建和使用445
第11章TCP/IP協定基礎450
11.1什麼是TCP/IP450
11.2TCP/IP協定的分層結構450
11.3套用層453
11.3.1DNS454
11.3.2連線埠的概念454
11.4傳輸層455
11.4.1TCP協定455
11.4.2UDP協定456
11.5網路層456
11.5.1IP協定456
11.5.2ARP協定462
11.5.3RARP協定464
11.5.4ICMP協定465
11.6數據鏈路層474
11.6.1數據鏈路層的基本概念474
11.6.2數據鏈路層的主要功能474
第12章套接字基礎476
12.1網路程式的架構477
12.2套接字的類型478
12.3套接字的地址結構478
12.4主機位元組序和網路位元組序479
12.5出錯信息的獲取481
第13章TCP套接字編程483
13.1TCP套接字編程的基本步驟483
13.2協定簇和地址簇484
13.3socket地址487
13.3.1通用socket地址487
13.3.2專用socket地址488
13.3.3IP位址的轉換489
13.4TCP套接字編程的相關函式491
13.4.1socket函式491
13.4.2bind函式492
13.4.3listen函式494
13.4.4accept函式494
13.4.5connect函式495
13.4.6write函式497
13.4.7read函式498
13.4.8send函式498
13.4.9recv函式499
13.4.10close函式499
13.4.11獲得套接字地址499
13.4.12阻塞套接字的使用504
13.4.13非阻塞套接字的使用511
第14章UDP套接字編程525
14.1UDP套接字編程的基本步驟525
14.2TCP套接字編程的相關函式526
14.2.1訊息傳送函式sendto和sendmsg526
14.2.2訊息接收函式recvfrom和recvmsg527
14.3實戰UDP套接字529
14.4UDP丟包及無序問題538
第15章原始套接字編程539
15.1原始套接字概述539
15.2與標準套接字的區別539
15.3原始套接字的編程方法540
15.4面向鏈路層的原始套接字編程函式540
15.4.1創建原始套接字函式540
15.4.2接收函式recvfrom541
15.4.3傳送函式sendto542
15.5乙太網幀格式545
15.6獲取網路接口的信息547
15.7實戰鏈路層的原始套接字550
15.7.1常見的套用場景550
15.7.2混雜模式577
15.7.3鏈路層原始套接字開發注意事項596
15.8面向IP層的原始套接字編程597
第16章C++網路性能測試工具iPerf的簡析605
16.1iPerf概述605
16.2iPerf的特點605
16.3iPerf的工作原理605
16.4iPerf的主要功能606
16.5在Linux下安裝iPerf607
16.6iPerf的簡單使用608
16.7iPerf原始碼概述609
16.8Thread類610
16.8.1數據成員說明611
16.8.2主要函式成員611
16.9SocketAddr類615
16.10Socket類617
16.10.1Listen函式618
16.10.2Accept函式620
16.10.3Connect函式620
第17章版本控制和SVN工具623
17.1SVN簡介623
17.1.1什麼是SVN623
17.1.2使用SVN的好處624
17.1.3使用SVN的基本流程624
17.2SVN伺服器的安裝和配置624
17.2.1VisualSVN伺服器的安裝和配置624
17.2.2SVN客戶端在Windows上的使用629
第18章C++跨平台開發634
18.1什麼是跨平台634
18.2C++的可移植性634
18.2.1可移植性的概念634
18.2.2影響C++語言可移植性的因素635
18.3設計跨平台軟體的原則638
18.3.1避免語言的擴展特性638
18.3.2實現動態的處理638
18.3.3使用腳本檔案進行管理639
18.3.4使用安全的數據串列化640
18.3.5跨平台開發中的編譯及測試641
18.3.6實現抽象641
18.4建立跨平台的開發環境642
18.4.1跨平台開發編譯器的選擇642
18.4.2建立跨平台的Make系統643
18.5C++語言跨平台軟體開發的實現648
18.6C++語言跨平台的開發策略649
18.7建立統一的工程包650
18.8建立跨平台的代碼庫650
18.9工廠模式與單例模式的實現651
18.10利用平台依賴庫封裝平台相關代碼651
18.11處理器的差異控制652
18.11.1記憶體對齊652
18.11.2位元組順序653
18.11.3類型的大小654
18.11.4使用預編譯處理類型差異654
18.12編譯器的差異控制655
18.12.1實現平台無關的代碼655
18.12.2記憶體管理657
18.12.3容錯性的影響657
18.12.4利用日誌管理異常657
18.13作業系統和接口庫658
18.13.1檔案描述符的限制659
18.13.2進程和執行緒的限制659
18.13.3作業系統抽象層659
18.14用戶界面660
18.14.1跨平台軟體圖形界面的設計660
18.14.2wxWidgets簡介661
18.14.3使用wxWidgets開發跨平台軟體的界面661
第19章Linux下的安全編程663
19.1本章概述663
19.2密碼學基礎知識665
19.2.1密碼學概述665
19.2.2對稱密鑰加密技術665
19.2.3公開密鑰加密技術666
19.2.4單向散列函式算法667
19.2.5數字簽名基礎知識667
19.3身份認證基礎知識668
19.3.1身份認證概述668
19.3.2身份認證的方式669
19.4密碼編程的兩個重要庫670
19.5OpenSSL的簡介671
19.6OpenSSL模組分析671
19.6.1OpenSSL原始碼模組結構671
19.6.2OpenSSL加密庫調用方式672
19.6.3OpenSSL支持的對稱加密算法673
19.6.4OpenSSL支持的非對稱加密算法673
19.6.5OpenSSL支持的信息摘要算法673
19.6.6OpenSSL密鑰和證書管理673
19.7面向對象與OpenSSL674
19.7.1BIO接口675
19.7.2EVP接口676
19.8OpenSSL的下載、編譯和升級安裝677
19.9對稱加解密算法的分類680
19.9.1流對稱算法680
19.9.2分組對稱算法680
19.9.3了解庫和頭檔案684
19.10利用OpenSSL進行對稱加解密686
19.10.1一些基本概念686
19.10.2對稱加解密相關函式687
19.11Crypto++的簡介695
19.12Crypto++的編譯696
19.13Crypto++進行AES加解密696

相關詞條

熱門詞條

聯絡我們