本書基于Linux內(nèi)核,以RedHat Linux平臺為例,介紹Linux系統(tǒng)程序設(shè)計的基礎(chǔ)知識,為準(zhǔn)備學(xué)習(xí)Linux系統(tǒng)程序開發(fā)的初學(xué)者提供方便快捷的途徑。 全書共12章。第1章介紹Linux操作系統(tǒng)的基本使用方法;第2章介紹Linux平臺下進行C語言開發(fā)需要的各種工具;第3章介紹Linux平臺下常用的編程基礎(chǔ)知識;第4~6章介紹文件、文件屬性、目錄文件相關(guān)的編程理論和方法;第7、8章介紹進程和線程的編程方法;第9~11章介紹信號、管道、信號量、共享內(nèi)存、消息隊列、套接字6種進程間通信方式;第12章介紹兩個貫穿本書大多數(shù)知識點的綜合案例。 本書可作為高等院校計算機科學(xué)與技術(shù)、軟件工程、物聯(lián)網(wǎng)工程等相關(guān)專業(yè)“Linux程序設(shè)計”相關(guān)課程的教材,同時可供本科高年級學(xué)生自學(xué)使用,也可以作為相關(guān)工程技術(shù)人員和計算機愛好者的參考書。
王凱,大連東軟信息學(xué)院 計算機科學(xué)與技術(shù)系副教授,多年來一直從事嵌入式軟件開發(fā),移動應(yīng)用開發(fā)等方面的教學(xué)與科研工作。
第1章 Linux基礎(chǔ)
1.1 UNIX/Linux簡介
1.1.1 UNIX簡介
1.1.2 UNIX體系結(jié)構(gòu)
1.1.3 Linux簡介
1.1.4 Linux版本說明
1.1.5 Linux特點
1.2 庫函數(shù)與系統(tǒng)調(diào)用
1.3 Linux常用命令
1.3.1 用戶和用戶組命令
1.3.2 文件和目錄命令
1.3.3 進程命令
1.3.4 獲取幫助信息
1.4 案例1:通過SSH終端登錄Linux 系統(tǒng)
1.4.1 分析與設(shè)計
1.4.2 實施
1.4.3 運行
習(xí)題
第2章 Linux系統(tǒng)開發(fā)環(huán)境
2.1 Vi編輯器
2.1.1 Vi編輯器的工作模式
2.1.2 Vi編輯器的基本用法
2.1.3 Vi編輯器的高級用法
2.2 GCC編譯器
2.2.1 GCC編譯器介紹
2.2.2 GCC編譯器基本用法
2.3 Makefile文件的使用
2.3.1 Makefile文件
2.3.2 Makefile文件的命名
2.3.3 Makefile文件的調(diào)用
2.3.4 Makefile文件的內(nèi)容
2.3.5 make命令的特殊用法
2.4 GDB調(diào)試器
2.4.1 輸出調(diào)試
2.4.2 GDB調(diào)試器
2.5 庫
2.5.1 庫相關(guān)概念
2.5.2 靜態(tài)庫和共享庫
2.6 案例2:簡易學(xué)生成績計算
2.6.1 分析與設(shè)計
2.6.2 實施
2.6.3 編譯與運行
習(xí)題
第3章 Linux程序設(shè)計初步
3.1 程序及進程的存儲結(jié)構(gòu)
3.2 變量的類型修飾符
3.3 命令行參數(shù)及獲取
3.3.1 命令行參數(shù)
3.3.2 getopt獲取命令行參數(shù)
3.4 環(huán)境變量
3.4.1 Shell變量
3.4.2 環(huán)境變量的相關(guān)命令
3.4.3 環(huán)境變量函數(shù)
3.5 時間管理
3.6 錯誤代碼
3.7 標(biāo)準(zhǔn)I/O與文件I/O
3.8 案例3:設(shè)置環(huán)境變量
3.8.1 分析與設(shè)計
3.8.2 實施
3.8.3 編譯與運行
習(xí)題
第4章 文件I/O
4.1 文件系統(tǒng)簡介
4.1.1 UNIX/Linux文件系統(tǒng)概述
4.1.2 虛擬文件系統(tǒng)(VFS)
4.1.3 索引節(jié)點(inode)
4.1.4 文件的類型
4.1.5 文件的訪問權(quán)限
4.2 訪問文件的內(nèi)核數(shù)據(jù)結(jié)構(gòu)
4.3 文件基本I/O操作
4.3.1 打開/創(chuàng)建文件
4.3.2 讀文件
4.3.3 寫文件
4.3.4 文件定位
4.3.5 關(guān)閉文件
4.3.6 文件操作舉例
4.4 文件訪問的同步
4.5 案例4:文件復(fù)制命令的實現(xiàn)
4.5.1 分析與設(shè)計
4.5.2 實施
4.5.3 編譯與運行
習(xí)題
第5章 文件屬性
5.1 獲取文件屬性
5.2 用戶/組ID與名字的轉(zhuǎn)換
5.2.1 用戶和組
5.2.2 獲取文件的用戶和組的信息
5.3 硬鏈接與符號鏈接
5.3.1 硬鏈接與符號鏈接的區(qū)別
5.3.2 相關(guān)的系統(tǒng)調(diào)用
5.4 dup/dup2
5.4.1 輸入/輸出重定向
5.4.2 系統(tǒng)調(diào)用dup/dup2
5.5 文件屬性的修改
5.5.1 修改文件屬性
5.5.2 改變文件所有者及所屬組chown/fchown/lchown
5.5.3 改變文件訪問權(quán)限chmod/fchmod
5.5.4 改變文件時間utime
5.5.5 改變文件長度truncate/ftruncate
5.6 案例5:顯示文件長格式信息
5.6.1 分析與設(shè)計
5.6.2 實施
5.6.3 編譯與運行
習(xí)題
第6章 目錄文件管理
6.1 目錄基本操作
6.1.1 打開目錄
6.1.2 讀目錄
6.1.3 關(guān)閉目錄
6.2 目錄其他操作
6.2.1 切換當(dāng)前目錄
6.2.2 創(chuàng)建目錄
6.2.3 刪除目錄
6.2.4 目錄指針定位
6.3 案例6:顯示指定目錄下文件列表
6.3.1 分析與設(shè)計
6.3.2 實施
6.3.3 編譯與運行
習(xí)題
第7章 進程控制
7.1 進程基本概念
7.1.1 進程和進程控制塊
7.1.2 進程標(biāo)識
7.1.3 用戶標(biāo)識
7.2 進程控制
7.2.1 創(chuàng)建進程
7.2.2 exec*系列函數(shù)
7.2.3 進程終止
7.2.4 等待進程結(jié)束
7.2.5 system函數(shù)
7.3 什么是Shell
7.3.1 用戶登錄Shell
7.3.2 Shell執(zhí)行命令
7.4 案例7:實現(xiàn)簡單的Shell
7.4.1 分析與設(shè)計
7.4.2 實施
7.4.3 編譯與運行
習(xí)題
第8章 線程
8.1 線程概念
8.2 線程基本操作
8.3 線程間通信
8.4 案例8:線程實例
8.4.1 分析與設(shè)計
8.4.2 實施
8.4.3 編譯與運行
習(xí)題
第9章 信號與管道
9.1 信號
9.1.1 信號的概念
9.1.2 信號的產(chǎn)生
9.1.3 信號的響應(yīng)方式
9.1.4 sleep函數(shù)和pause系統(tǒng)調(diào)用
9.1.5 信號集
9.2 管道
9.2.1 管道基本概念
9.2.2 FIFO
習(xí)題
第10章 進程間通信
10.1 System V IPC簡介
10.2 System V信號量
10.3 System V共享內(nèi)存
10.4 System V消息隊列
習(xí)題
第11章 網(wǎng)絡(luò)編程
11.1 網(wǎng)絡(luò)編程基本概念
11.1.1 常用網(wǎng)絡(luò)相關(guān)命令和配置文件
11.1.2 軟件體系結(jié)構(gòu)
11.1.3 網(wǎng)絡(luò)協(xié)議及OSI參考模型
11.1.4 IP地址和端口
11.1.5 字節(jié)順序
11.1.6 網(wǎng)絡(luò)數(shù)據(jù)傳輸方式
11.2 套接字編程基礎(chǔ)
11.2.1 套接字簡介
11.2.2 套接字地址結(jié)構(gòu)
11.2.3 面向連接套接字通信過程
11.2.4 面向無連接套接字通信過程
11.3 套接字編程相關(guān)系統(tǒng)調(diào)用
11.3.1 系統(tǒng)調(diào)用socket
11.3.2 系統(tǒng)調(diào)用bind
11.3.3 系統(tǒng)調(diào)用listen
11.3.4 系統(tǒng)調(diào)用accept
11.3.5 系統(tǒng)調(diào)用connect
11.3.6 系統(tǒng)調(diào)用send
11.3.7 系統(tǒng)調(diào)用sendto
11.3.8 系統(tǒng)調(diào)用recv
11.3.9 系統(tǒng)調(diào)用recvfrom
11.3.10 系統(tǒng)調(diào)用close
11.3.11 系統(tǒng)調(diào)用shutdown
11.4 案例9:基于網(wǎng)絡(luò)的進程間通信
11.4.1 分析與設(shè)計
11.4.2 實施
11.4.3 編譯與運行
11.5 基于UDP的網(wǎng)絡(luò)編程
11.6 域名解析
11.6.1 域名解析
11.6.2 IP地址形式轉(zhuǎn)換
11.6.3 IP地址與主機名
習(xí)題
第12章 綜合案例
12.1 Linux網(wǎng)絡(luò)傳輸系統(tǒng)
12.1.1 構(gòu)思
12.1.2 設(shè)計
12.1.3 實施
12.1.4 運行
12.2 簡易的文件傳輸系統(tǒng)
12.2.1 構(gòu)思
12.2.2 設(shè)計
12.2.3 實施
12.2.4 運行
習(xí)題
附錄A Linux主要的系統(tǒng)調(diào)用
附錄B ASCII碼
參考文獻