注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計Linux C與C++ 一線開發(fā)實踐

Linux C與C++ 一線開發(fā)實踐

Linux C與C++ 一線開發(fā)實踐

定 價:¥129.00

作 者: 朱文偉,李建英 著
出版社: 清華大學(xué)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787302512554 出版時間: 2018-12-01 包裝: 平裝
開本: 16開 頁數(shù): 698 字?jǐn)?shù):  

內(nèi)容簡介

  Linux C/C++編程在Linux應(yīng)用程序開發(fā)中占有重要的地位,掌握這項技能將在就業(yè)競爭中立于不敗之地。本書是一本針對初、中級讀者的、貼近軟件公司一線開發(fā)實踐的書。 本書共分為19章,內(nèi)容包括Linux概述、搭建開發(fā)環(huán)境、語言基礎(chǔ)、文件編程、多進(jìn)程編程、進(jìn)程間通信、Web編程、多線程編程、Linux下的庫、TCP/IP協(xié)議基礎(chǔ)、網(wǎng)絡(luò)編程、網(wǎng)絡(luò)性能測試工具iPerf簡析、版本控制和SVN工具、C++跨平臺開發(fā)以及安全編程等。 本書適合想全面學(xué)習(xí)Linux環(huán)境下C/C++語言編程的讀者,并可作為初中級開發(fā)人員的案頭查閱與參考手冊,也適合作為高等院校和培訓(xùn)學(xué)校相關(guān)專業(yè)師生的教學(xué)參考書。

作者簡介

  朱文偉,計算機(jī)應(yīng)用專業(yè)碩士,10多年C\\C++開發(fā)經(jīng)驗。開發(fā)過芯片開發(fā)系統(tǒng)、網(wǎng)絡(luò)單向傳輸系統(tǒng)、安全優(yōu)盤應(yīng)用系統(tǒng)、usbkey應(yīng)用系統(tǒng)、密碼機(jī)評測系統(tǒng)等產(chǎn)品。精通Linux、Windows系統(tǒng)開發(fā)及數(shù)據(jù)庫開發(fā)技術(shù)。

圖書目錄

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

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號