注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡操作系統(tǒng)LinuxLinux編程24學時教程

Linux編程24學時教程

Linux編程24學時教程

定 價:¥49.00

作 者: (美)Warren W.Gay(華倫·W.蓋伊)著;瀟湘工作室譯
出版社: 機械工業(yè)出版社
叢編項: 自學通系列
標 簽: UNIX操作系統(tǒng) Linux

ISBN: 9787111080114 出版時間: 2000-05-01 包裝:
開本: 26cm+光盤1片 頁數(shù): 348頁 字數(shù):  

內容簡介

  本書循序漸進地介紹Linux編程技術,包括創(chuàng)建make文件、Linux過濾程序及錯誤處理和報告、創(chuàng)建Linux實用程序、調試程序、使用Linux及其編譯器和GNU軟件,以及信號量、進程、函數(shù)和函數(shù)庫的使用等。本書適用于懂得C語言初學Linux的程序員。

作者簡介

暫缺《Linux編程24學時教程》作者簡介

圖書目錄

譯者序
前言
第1學時 入門
1.1 Linux簡介
1.2 GNU gcc簡介
1.2.1 選擇GNU標準
1.2.2 指定編譯器輸出
1.2.3 運行編譯后的程序
1.3 用于調試的編譯
1.4 檢查編譯器的警告級別
1.5 處理編譯器的警告消息
1.5.1 關于賦值的警告
1.5.2 關于未用參數(shù)的警告
1.5.3 解決關于未用變量的警告
1.5.4 解決關于未用字符串的警告
1.6 測試C編譯器
1.7 課時小結
1.8 專家答疑
1.9 課外作業(yè)
1.9.1 思考題
1.9.2 練習題
第2學時 管理源代碼
2.1 使用源代碼管理的好處
2.2 有哪些可以選擇的工具
2.3 為項目設置RCS
2.4 創(chuàng)建新的源文件
2.5 查看RCS控制的文件
2.6 使用RCS子目錄
2.7 簽出文件進行編輯
2.8 修改文件
2.9 顯示修改的內容
2.10 注冊修改
2.11 用rlog命令列出編輯歷史記錄
2.12 嵌入式替換
2.13 顯示嵌入的RCS信息
2.14 使用源文件模板
2.14.1 源代碼模板
2.14.2 包含文件模板
2.15 取消鎖定的簽出
2.16 課時小結
2.17 專家答疑
2.18 課外作業(yè)
2.18.1 思考題
2.18.2 練習題
第3學時 編寫Linux實用程序
3.1 開始使用項目dos_cvrt
3.1.1 項目規(guī)劃
3.1.2 簽出dos_cvrt.c進行編輯
3.1.3 選擇包含文件
3.1.4 利用占位程序編寫dos_cvrt
3.1.5 測試帶占位程序的實用程序
3.1.6 替換占位程序
3.1.7 回顧整個項目
3.2 使用命令行編輯
3.2.1 選擇命令行編輯模式
3.2.2 進行命令行搜索
3.3 課時小結
3.4 專家答疑
3.5 課外作業(yè)
3.5.1 思考題
3.5.2 練習題
第4學時 C語言的模塊化編程
4.1 模塊化編程
4.2 制作模塊化的dos_cvrt.c
4.2.1 簽出dos_cvrt.c進行編輯
4.2.2 將dos_cvrt.c分解為函數(shù)
4.2.3 改善dos_cvrt
4.2.4 將dos_cvrt分解為獨立的源程序模塊 
4.2.5 聲明靜態(tài)函數(shù)
4.3 課時小結
4.4 專家答疑
4.5 課外作業(yè)
4.5.1 思考題
4.5.2 練習題
第5學時 Make文件簡介
5.1 為什么要使用make
5.2 Makefile文件
5.2.1 測試make的內部功能
5.2.2 命名自已的Makefile文件
5.2.3 Makefile的目標文件
5.2.4 默認的目標文件
5.2.5 標準目標文件名稱
5.2.6 依賴關系
5.3 定義make的宏
5.3.1 替代宏的值
5.3.2 使用環(huán)境變量
5.3.3 使用make的-e選項
5.4 檢查文件的后綴
5.5 推理規(guī)則
5.5.1 測試默認推理規(guī)則
5.5.2 定義推理規(guī)則
5.5.3 動作語句
5.5.4 內部宏
5.5.5 宏CFLAGS
5.6 為dos_cvrt使用Makefile文件
5.6.1 生成一個Makefile文件
5.6.2 測試新的Makefile文件
5.6.3 測試局部編譯
5.7 課時小結
5.8 專家答疑
5.9 課外作業(yè)
5.9.1 思考題
5.9.2 練習題
第6學時 Linux命令行選項處理
6.1 命令行處理簡介
6.1.1 命令行約定
6.1.2 使用多個選項
6.1.3 組合多個選項
6.1.4 使用帶參數(shù)的選項
6.1.5 區(qū)分選項和參數(shù)
6.2 檢查看起來像選項的參數(shù)
6.3 getopt()簡介
6.4 getopt()函數(shù)調用
6.5 回顧函數(shù)getopt()的原型
6.5.1 定義optstring參數(shù)
6.5.2 定義一個選項處理循環(huán)
6.6 使用getopt()改進dos_cvrt
6.7 GNU長選項擴展
6.8 使用GNU函數(shù)getop_long()
6.8.1 定義GNU函數(shù)getop_long()的原型
6.8.2 理解option結構
6.8.3 設置option結構
6.8.4 使用一個空option.flag指針
6.8.5 使用一個非空option.flag指針
6.9 為dos_cvrt增加GNU長選項
6.10 課時小結
6.11 專家答疑
6.12 課外作業(yè)
6.12.1 思考題
6.12.2 練習題
第7學時 錯誤的處理和報告
7.1 如何處理錯誤
7.2 UNIX的錯誤報告
7.2.1 指出成功或錯誤
7.2.2 判斷錯誤的原因
7.3 舊的errno值
7.3.1 通過名稱引用錯誤代碼
7.3.2 測試特殊錯誤
7.3.3 正確使用errno
7.4 新的errno值
7.4.1 聲明新的errno變量
7.4.2 使用新的errno變量
7.5 關于errno值的輸出
7.5.1 使用函數(shù)perror()
7.5.2 使用數(shù)組sys_errlist[]
7.5.3 使用函數(shù)strerror()
7.6 改進dos_cvrt使它友好地報告錯誤
7.6.1 改進模塊unix2dos.c
7.6.2 改進模塊dos2ix.c
7.6.3 生成模塊putch.c
7.6.4 改變包含文件dos_cvrt.h
7.6.5 改進Makefile
7.6.6 改進模塊dos_cvrt.c
7.7 測試所有的錯誤
7.8 課時小結
7.9 專家答疑
7.10 課外作業(yè)
7.10.1 思考題
7.10.2 練習題
第8學時 Linux的main程序及其環(huán)境
8.1 main程序接口
8.1.1 組織數(shù)組argv[]
8.1.2 使用不帶argc的argv[]
8.1.3 聲明第三個main()參數(shù)
8.1.4 傳遞外殼的外部變量
8.1.5 使用外部指針environ
8.2 Linux程序的地址空間
8.3 環(huán)境操作
8.3.1 獲取一個環(huán)境變量
8.3.2 改變環(huán)境變量
8.3.3 刪除環(huán)境變量的定義
8.3.4 理解環(huán)境變化的影響
8.4 進程出口值
8.4.1 退出代碼處理
8.4.2 返回一個值
8.4.3 使用exit()函數(shù)
8.4.4 在return和exit()之間選擇
8.4.5 使用關于return語句的編譯器警告
8.5 課時小結
8.6 專家答疑
8.7 課外作業(yè)
8.7.1 思考題
8.7.2 練習題
第9學時 有用的調試技術
9.1 調試技術簡介
9.2 調試器的限制
9.3 用C宏進行跟蹤
9.3.1 定義一個TRACE宏
9.3.2 改進TRACE宏
9.3.3 定義一個參數(shù)數(shù)量可變的TRACEF
9.3.4 定義有條件的調試宏
9.4 運行階段調試跟蹤功能
9.4.1 用命令行選項控制TRACE
9.4.2 使用調試級別
9.4.3 通過環(huán)境變量來設置調試級別
9.5 設計子系統(tǒng)跟蹤功能
9.5.1 編寫子系統(tǒng)跟蹤功能
9.5.2 子系統(tǒng)跟蹤總結
9.6 課時小結
9.7 專家答疑
9.8 課外作業(yè)
9.8.1 思考題
9.8.2 練習題
第10學時 靜態(tài)和共享函數(shù)庫
10.1 C函數(shù)庫簡介
10.2 靜態(tài)函數(shù)庫
10.2.1 回顧進程內存映像
10.2.2 實現(xiàn)一個靜態(tài)函數(shù)庫
10.2.3 使用ar命令來生成檔案
10.2.4 列出檔案的內容
10.2.5 鏈接靜態(tài)函數(shù)庫
10.3 共享函數(shù)庫
10.3.1 靜態(tài)函數(shù)庫的限制
10.3.2 生成一個共享函數(shù)庫
10.3.3 鏈接共享函數(shù)庫
10.3.4 列出共享函數(shù)庫的引用
10.3.5 使用動態(tài)裝載器
10.3.6 獨立于代碼的編譯位置
10.3.7 控制共享的內容
10.4 函數(shù)庫的含義
10.4.1 靜態(tài)函數(shù)庫的優(yōu)點
10.4.2 共享函數(shù)庫的優(yōu)點
10.5 何時該使用靜態(tài)或共享函數(shù)庫
10.5.1 許可證號
10.5.2 安裝可靠
10.5.3 為了節(jié)省而共享
10.5.4 動態(tài)裝載
10.6 課時小結
10.7 專家答疑
10.8 課外作業(yè)
10.8.1 思考題
10.8.2 練習題
第11學時 高級字符串函數(shù)
11.1 高級字符串函數(shù)簡介
11.2 包含字符串函數(shù)聲明
11.3 函數(shù)strcasecmp()和strncasecmp()
11.3.1 測試一個命令名稱匹配的例子
11.3.2 比較前n個字符
11.3.3 解釋返回值
11.4 函數(shù)strdup()
11.4.1 釋放字符串
11.4.2 測試錯誤
11.5 函數(shù)strchr()和strrchr()
11.6 函數(shù)strpbrk()
11.7 函數(shù)strspn()和strcspn()
11.8 函數(shù)strstr()
11.9 函數(shù)strtok()和strtok_r()
11.9.1 函數(shù)strtok()
11.9.2 分解一個命令行
11.9.3 函數(shù)strtok_r()
11.9.4 strtok()的限制
11.9.5 保存狀態(tài)
11.9.6 介紹strtok_r()函數(shù)
11.10 字符串使用技巧
11.10.1 優(yōu)化strcat()和strcpy()調用
11.10.2 有效地使用strncpy()返回值
11.10.3 臨時編寫sprintfcat()函數(shù)
11.11 課時小結
11.12 專家答疑
11.13 課外作業(yè)
11.13.1 思考題
11.13.2 練習題
第12學時 轉換函數(shù)
12.1 轉換函數(shù)簡介
12.2 系列函數(shù)atoi()、atol()和atof()
12.2.1 詳細考察函數(shù)atoi()和atol()
12.2.2 使用atof()函數(shù)
12.3 為轉換和有效性使用sscanf()
12.3.1 將sscanf()用于數(shù)字轉換
12.3.2 測試使用sscanf()的數(shù)值轉換
12.3.3 改善sscanf()轉換
12.3.4 考慮sscanf()的限制
12.4 函數(shù)strtol()和strtoul()
12.4.1 使用函數(shù)strtol()
12.4.2 測試函數(shù)strtol()
12.4.3 測試錯誤
12.4.4 測試轉換指針
12.4.5 執(zhí)行多個轉換
12.4.6 理解基數(shù)轉換
12.4.7 測試上溢和下溢
12.4.8 對strtoul()上溢的測試
12.5 函數(shù)strtod()
12.5.1 使用函數(shù)strtod()
12.5.2 測試數(shù)學錯誤
12.6 課時小結
12.7 專家答疑
12.8 課外作業(yè)
12.8.1 思考題
12.8.2 練習題
第13學時 Linux的日期和時間功能
13.1 日期和時間支持功能簡介
13.2 Epoch時間簡介
13.3 理解當前的Linux日期和時間
13.3.1 定義日期和時間數(shù)據(jù)類型
13.3.2 理解為什么時間在運行
13.3.3 發(fā)現(xiàn)time_t數(shù)據(jù)類型
13.3.4 使用time()獲得日期和時間
13.4 使用時間轉換函數(shù)
13.4.1 函數(shù)ctime()
13.4.2 函數(shù)localtime()和gmtime()
13.4.3 tm結構
13.4.4 函數(shù)asctime()
13.4.5 函數(shù)tzset()
13.4.6 函數(shù)mktime()
13.5 定制日期和時間格式
13.6 課時小結
13.7 專家答疑
13.8 課外作業(yè)
13.8.1 思考題
13.8.2 練習題
第14學時 用戶ID、密碼和組管理
14.1 簡單介紹Linux的管理
14.1.1 用戶名和uid編號
14.1.2 組名和gid編號
14.2 身份函數(shù)
14.2.1 getuid()和geteuid()函數(shù)
14.2.2 getgid()和getegid()函數(shù)
14.2.3 uid和gid編號示例
14.3 /etc/passwd文件
14.3.1 注釋域
14.3.2 在注釋域中使用&
14.3.3 搜索密碼數(shù)據(jù)庫
14.4 密碼數(shù)據(jù)庫例程
14.4.1 passwd結構
14.4.2 處理getpwent()函數(shù)的錯誤
14.4.3 fgetpwent()函數(shù)
14.4.4 putpwent()函數(shù)
14.4.5 getpwuid()函數(shù)
14.4.6 getpwnam()函數(shù)
14.5 組數(shù)據(jù)庫
14.5.1 /etc/group文件
14.5.2 getgrent()、setgrent()和endgrent()函數(shù)
14.5.3 group結構
14.5.4 fgetgrent()函數(shù)
14.5.5 getgrgid()函數(shù)
14.5.6 getgrnam()函數(shù)
14.6 課時小結
14.7 專家答疑
14.8 課外作業(yè)
14.8.1 思考題
14.8.2 練習題
第15學時 文件系統(tǒng)信息和管理
15.1 基本的文件操作
15.1.1 刪除文件
15.1.2 鏈接文件
15.1.3 移動文件
15.2 目錄操作
15.2.1 得到當前的工作目錄
15.2.2 改變目錄
15.2.3 創(chuàng)建新目錄
15.2.4 刪除目錄
15.3 設置umask值
15.3.1 為什么要用umask
15.3.2 umask的作用范圍
15.3.3 使用umask()函數(shù)
15.4 理解文件系統(tǒng)信息
15.5 課時小結
15.6 專家答疑
15.7 課外作業(yè)
15.7.1 思考題
15.7.2 練習題
第16學時 臨時文件和進程清理
16.1 生成臨時文件名
16.1.1 調用tmpnam()函數(shù)
16.1.2 調用mkstemp()函數(shù)
16.1.3 調用tmpfile()函數(shù)
16.1.4 調用tempnam()函數(shù)
16.1.5 解釋臨時文件函數(shù)的錯誤
16.2 將文件設為臨時文件
16.2.1 調用unlink()函數(shù)將文件設為臨時文件
16.2.2 退出之前的清理
16.3 課時小結
16.4 專家答疑
16.5 課外作業(yè)
16.5.1 思考題
16.5.2 練習題
第17學時 管道和進程
17.1 使用外部進程
17.2 管道簡介
17.2.1 打開管道
17.2.2 讀管道
17.2.3 寫管道
17.2.4 關閉管道
17.2.5 處理斷開的管道
17.3 system()函數(shù)簡介
17.3.1 system()函數(shù)的返回值
17.3.2 調用system()函數(shù)
17.3.3 運行程序示例
17.3.4 對system()函數(shù)的評價
17.4 課時小結
17.5 專家答疑
17.6 課外作業(yè)
17.6.1 思考題
17.6.2 練習題
第18學時 派生進程
18.1 進程簡介
18.1.1 進程ID號
18.1.2 父進程和子進程
18.1.3 創(chuàng)建進程
18.2 fork()函數(shù)
18.2.1 調用fork()函數(shù)
18.2.2 運行fork()函數(shù)示例
18.3 wait()函數(shù)族
18.3.1 wait()函數(shù)的重要性
18.3.2 調用wait()函數(shù)
18.3.3 wait函數(shù)族中的其他函數(shù)
18.4 exec()函數(shù)族
18.4.1 exec()過程
18.4.2 聯(lián)合fork()函數(shù)和exec()函數(shù)
18.4.3 調用exec()函數(shù)
18.4.4 exec()函數(shù)族中的其他函數(shù)
18.5 課時小結
18.6 專家答疑
18.7 課外作業(yè)
18.7.1 思考題
18.7.2 練習題
第19學時 信號量
19.1 信號量簡介
19.1.1 和單淋浴間的類比
19.1.2 和多淋浴間的類比
19.1.3 使用Linux信號量
19.1.4 等待信號量
19.1.5 通知信號量
19.1.6 等待多個實例
19.2 創(chuàng)建和訪問信號量集
19.2.1 標識已存在的信號量集
19.2.2 調用semget()函數(shù)來創(chuàng)建和訪問信號量集
19.2.3 初始化信號量集
19.3 等待和通知信號量集
19.3.1 等待信號量集
19.3.2 通知信號量集
19.4 釋放信號量占用的系統(tǒng)資源
19.4.1 刪除信號量集
19.4.2 使用iPcrm命令釋放信號量
19.5 模擬使用信號量
19.6 課時小結
19.7 專家答疑
19.8 課外作業(yè)
19.8.1 思考題
19.8.2 練習題
第20學時 共享內存
20.1 為什么需要共享內存
20.2 標識共享內存
20.3 創(chuàng)建、連接和釋放共享內存
20.3.1 創(chuàng)建新的共享內存
20.3.2 連接共享內存
20.3.3 在指定的地址連接
20.3.4 分離共享內存
20.3.5 釋放共享內存
20.4 使用共享內存
20.4.1 安全訪問共享內存
20.4.2 直接引用共享內存而不用信號量
20.5 將共享內存應用到一個游戲中
20.5.1 回顧戰(zhàn)艦游戲
20.5.2 玩家指令
20.5.3 分析玩家1的代碼
20.5.4 分析玩家2的代碼
20.5.5 查看其他重要的源模塊
20.6 課時小結
20.7 專家答疑
20.8 課外作業(yè)
20.8.1 思考題
20.8.2 練習題
第21學時 消息隊列
21.1 消息隊列簡介
21.1.1 Linux消息隊列
21.1.2 應用消息類型
21.1.3 相互競爭的接收者
21.2 管理消息隊列
21.2.1 創(chuàng)建和訪問消息隊列
21.2.2 釋放消息隊列
21.2.3 消息的結構
21.2.4 指定消息的大小
21.2.5 發(fā)送消息
21.2.6 接收消息
21.3 呼叫服務器
21.4 課時小結
21.5 專家答疑
21.6 課外作業(yè)
21.6.1 思考題
21.6.2 練習題
第22學時 信號
22.1 什么是信號
22.2 信號SIGINT
22.3 信號的術語
22.4 可靠的和不可靠的信號
22.5 使用信號集
22.5.1 清空信號集
22.5.2 填充信號集
22.5.3 向信號集中添加信號
22.5.4 從信號集中刪除信號
22.5.5 測試信號集中的信號
22.6 設置信號響應
22.7 捕獲信號
22.8 封鎖和解鎖信號
22.9 得到掛起的信號
22.10 調用sigsuspend()函數(shù)
22.11 調用alarm()函數(shù)
22.12 高級信號技術
22.12.1 從信號處理程序中調用函數(shù)
22.12.2 避免可重入代碼問題
22.12.3 在信號處理程序中處理errno
22.12.4 處理EINTR錯誤
22.13 常用的Linux信號
22.14 引發(fā)Linux信號
22.15 課時小結
22.16 專家答疑
22.17 課外作業(yè)
22.17.1 思考題
22.17.2 練習題
第23學時 客戶/服務器編程
23.1 客戶/服務器的優(yōu)點
23.2 設計TQL服務器
23.2.1 編譯TQL項目
23.2.2 使用TQL命令行選項
23.2.3 檢查TQL的環(huán)境變量
23.3 理解SQL
23.3.1 使用SELECT命令
23.3.2 使用表和列
23.3.3 第一次啟動TQL
23.3.4 選擇特定的列
23.3.5 選擇特定的行
23.3.6 對行進行排序
23.4 分析TQL的源代碼
23.4.1 分析表代碼
23.4.2 在tqld中處理信號
23.4.3 分析排序模塊
23.4.4 執(zhí)行sort命令
23.5 課時小結
23.6 專家答疑
23.7 課外作業(yè)
23.7.1 思考題
23.7.2 練習題
第24學時 使用幫助頁
24.1 介紹man命令
24.1.1 使用man命令
24.1.2 探索節(jié)的內容
24.1.3 找到幫助頁
24.1.4 調試幫助頁
24.1.5 解決與文檔的沖突
24.1.6 查看ERRORS部分
24.1.7 查看SEE ALSO部分
24.1.8 查找文件
24.1.9 有文檔記錄的錯誤
24.2 課時小結
24.3 展望未來
24.4 專家答疑
24.5 課外作業(yè)
24.5.1 思考題
24.5.2 練習題
附錄 思考題答案

本目錄推薦

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