注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡軟件與程序設計程序設計綜合GNU/LINUX編程指南

GNU/LINUX編程指南

GNU/LINUX編程指南

定 價:¥62.00

作 者: (美)[K.沃爾]K.Wall,(美)[M.沃森]M.Watson,(美)M.Whitis著;王勇 等譯
出版社: 清華大學出版社
叢編項: 系統(tǒng)高級編程、管理技術叢書
標 簽: Linux

ISBN: 9787302039136 出版時間: 2000-06-01 包裝:
開本: 26cm 頁數: 592 字數:  

內容簡介

  本書介紹如何在Linux的內核、系統(tǒng)調用及應用程序層次上編寫應用程序。主要內容包括:建立和定制用于Linux應用程序的GUI環(huán)境,探索X—Window系統(tǒng),介紹KDE和GNOME庫的強大功能,以及系統(tǒng)編程的各個專題,包括進程、信號、內存管理和進程間通信、集成Internet功能等。本書的獨到之處是具體講述了RPM之類的軟件包管理工具以及如何編寫有用的文檔使之把應用程序轉交給用戶。這通常是其他編程書中所沒有的。本書內容全面,既討論編程所需用到的工具,也討論了GNU/Linux的工作環(huán)境,并細致地講述了Linux/Unix具體編程的獨到之處。該書適用于中高級程序開發(fā)人員。

作者簡介

暫缺《GNU/LINUX編程指南》作者簡介

圖書目錄

第1部分 Linux編程工具包
第1章 概貌
1.1 Linux既往成就
1.2 Linux預期成就
1.3 Linux簡史
1.4 Linux與UNIX
1.5 Linux編程
1.6 為何選擇Linux編程
1.7 小結
第2章 設置開發(fā)系統(tǒng)
2.1 硬件選擇
2.1.1 硬件選擇上的考慮
2.2 處理器/王板
2.2.1 板上I/O
2.2.2 處理器
2.2.3 BIOS
2.2.4 內存
2.2.5 機箱和電源
2.3 用戶交互硬件:視頻、聲音、鍵盤及鼠標
2.3.1 顯卡
2.3.2 顯示器
2 3.3 聲卡
2.4 鍵盤與鼠標
2.5 通信設備、端口及總線
2.5.1 調制解調器
2.5.2 網絡接口卡
2.5.3 SCSI
2.5.4 USB與火線(IEEE 1394)
2.5.5 串行卡(包括多端口)
2.5.6 IRDA
2.5.7 PCMCIA卡
2.5.8 ISA即插即用設備
2.6 存儲設備
2.6.1 硬盤
2.6.2 可移動磁盤設備
2.6.3 CD-ROM/DVD
2.6.4 磁帶備份設備
2.7 外圍設備
2.7.1 打印機
2.7.2 掃描儀
2.7.3 數字相機
2 7.4 家居自動控制設備
2.8 完備型系統(tǒng)
2.9 便攜系統(tǒng)
2.10 安裝
2.11 小結
第3章 使用GNU cc
3.1 GNU cc特性
3.2 使用簡介
3.3 常用命令行選項
3.3.1 函數庫和包含文件
3.3.2 出錯檢查及警告
3.4 優(yōu)化選項
3.5 調試選項
3.6 GNU C擴展
3.7 小結
第4章 使用GNU make管理項目
4.1 為何使用make
4.2 編寫makefile
4.3 有關makefile編寫的詳細規(guī)則
4.3.1 偽目標
4.3.2 變量
4.3.3 環(huán)境變量、自動變量及預定義變量
4.3.4 隱式規(guī)則
4.3.5 模式規(guī)則
4.3.6 注釋
4.4 額外的make命令行選項
4.5 調試make
4.6 常見的make出錯消息
4.7 有用的makefile目標
4.8 小結
第5章 使用autoconf創(chuàng)建自配置軟件
5.1.1 創(chuàng)建configure.in文件
5.1.2 構造文件
5.1.3 有用的autoconf實用工具
5.2 內置宏
5.2.1 候選程序測試
5.2.2 庫函數測試
5.2.3 頭文件測試
5.2.4 結構測試
5.2.5 類型定義測試
5.2.6 編譯器行為測試
5.2.7 系統(tǒng)服務測試
5.2.8 UNIX變種測試
5.3 普通宏
5.4 一個帶注解的autoconf腳本
5.5 小結
第6章 比較和歸并原文件
6.1 比較文件
6.1.1 理解cmp命令
6.1.2 理解diff命令
6.1.3 理解diff3命令
6.1.4 理解sdiff命令
6.2 準備源代碼補丁
6.2.1 Patch命令行選項
6.2.2 創(chuàng)建補丁
6.2.3 使用補丁
6.3 小結
第7章 使用RCS控制版本
7.1 術語
7.2 RCS基本用法
7.2.1 Ci和C
7.2.2 RCS關鍵字
7.2.3 ident命令
7.3 rcsdiff
7.4 其他RCS命令
7.4.1 rcsclean
7.4.2 rlog
7.4.3 rcs
7.4.4 rcsmerge
第8章 在Emacs中創(chuàng)建程序
8.1 Emacs簡介
8.1.1 啟動與停止Emacs
8.1.2 移動
8.1.3 插入文本
8.1.4 刪除文本
8.1.5 查找和替換
8.1.6 保存和打開文件
8.1.7 多窗口
8.2 支持編程的特性
8.2.1 縮進約定
8.2.2 語法高亮度顯示
8.2.3 使用注釋
8.2.4 使用Emacs進行編譯
8.2.5 定制簡介
8.3 使用Emacs Lisp自動完成Emacs操作
8.4 小結
第2部分 系統(tǒng)編程
第9章 I/O例程
9.1 文件描述符
9.2 使用文件描述符的系統(tǒng)調用
9.2.1 open()調用
9.2.2 close()調用
9.2.3 read()調用
9.2.4 write()調用
9.2.5 ioctl()調用
9.2.6 fcntl()調用
9.2.7 fsync()調用
9.2.8 ftruncate()調用
9.2.9 lseek()調用
9.2.10 dup()和 dUp2()調用
9.2.11 select()調用
9.2.12 fstat()調用
9.2.13 fchown()調用
9.2.14 fchmod()調用
9.2.15 fchdir()調用
9.2.16 flock()調用
9.2.17 pipe()調用
9.3 文件類型
9.3.1 普通文件
9.3.2 磁帶I/O
9.3.3 串口I/O
9.3.4 打印機接口
9.3.5 聲卡
9.4 小結
第10章 文件操作
10.1 文件操作函數
10.1.1 打開/關閉文件
10.1.2 基本的讀和寫
10.1.3 狀態(tài)函數
10.2 格式化輸出
10.2.1 格式化輸入
10.2.2 基于字符和行的輸入輸出
10.2.3 文件定位
10.2.4 緩沖區(qū)控制
10.2.5 刪除和改名
10.2.6 臨時文件
10.3 小結
第11章 進程控制
11.1 進程的屬性
11.2 系統(tǒng)調用及庫函數
11.2.1 fork()系統(tǒng)調用
11.2.2 exec()函數族
11.2.3 system()和popen()函數
11.2.4 clone()函數調用
11.2.5 wait()、waitpid()、wait3()以及wait4()系統(tǒng)調用
11.2.6 select()系統(tǒng)調用
11.2.7 信號
11.2.8 程序的中止
11.2.9 鬧鐘和計時器
11.3 調度參數
11.4 線程
11.4.1 pthread-create()函數
11.4.2 pthread-exit()函數
11.4.3 pthread-join()函數
11.4.4 屬性的控制
11.4.5 pthread一atfork()函數
11.4.6 取消線程
11.4.7 othread_cleanup一push()宏
11.4.8 pthread-cond-init()函數
11.4.9 Pthread-equal()函數
11.4.10 互斥
11.5 編程示例
11.5.1 子庫
11.5.2 例子child一demol.c程序
11.5.3 例子程序child-demo2.c
11.5.4 例子程序child.demo3.c
11.6 小結
第12章 訪問系統(tǒng)信息
12.1 進程的信息
12.1.1 cmdline文件
12.1.2 environ文件
12.1.3 fd目錄
12.1.4 mem文件
12.1.5 stat文件
12.1.6 status文件
12.1.7 CWd符號鏈接
12.1.8 exe符號鏈接
12.1.9 maps文件
12.1.10 root符號鏈接
12.1.11 statm文件
12.2 普通的系統(tǒng)信息
12.2.1 /proc/cmd/line文件
12.2.2 /proc/cpuinfo文件
12.2.3 /proc/devices文件
12.2.4 /proc/dma文件
12.2.5 /proc/filesystems文件
12.2.6 /proc/Interrupts文件
12.2.7 /proc/ioports文件
12.2.8 /proc/kcore文件
12.2.9 /proc從/Kmsg文件
12.2.10 /proc/ksyms文件
12.2.11 /proc/loadavg文件
12 2.12 /proc/locks文件
12.2.13 /proc/mdstat文件
12.2.14 /proc/meminfo文件
12.2.15 /proc/misc文件
12.2.16 /proc/modules文件
12.2.17 /proc/mounts文件
12.2.18 /proc/pci文件
12.2.19 /proc/rtc文件
12.2.20 /proc/stat文件
12.2.21 /proc/uptime文件
12.2.22 /proc/version文件
12.2.23 /Proc/net子目錄
12.2.24 /proc/sesi子目錄
12.2.25 /proc/sys目錄
12.3 函數庫和實用工具
12.4 小結
第13章 出錯處理
13.1 出錯處理簡述
13.2 C語言機制
13.2.1 assert()宏
13.2.2 使用預編譯
13.2.3 標準庫工具
13.2.4 對錯誤代碼errno的理解
13.2.5 使用函數abort()
13.2.6 使用函數exit()
13.2.7 使用函數atexit()
13.2.8 使用函數strerror()
13.2.9 使用函數perror()
13.3 系統(tǒng)日志工具
13.3.1 用戶程序
13.4 小結
第14章 內有管理
14.1 C內存管理的回顧
14.1.1 malloc()函數的使用
14.1.2 calloc()函數的使用
14.1.3 realloc()函數的使用
14.1.4 free()函數的使用
14.1.5 alloca()函數的使用
14.2 內存映像文件
14.2.l mmaP()函數的使用
14.2.2 munmap()函數的使用
14.2.3 msync()函數的使用
14.2.4 mprotect()函數的使用
14.2.5 鎖住內存
14.2.6 mremap()函數的使用
14.2.7 用內存映像實現cat( l)
14.3 發(fā)現并修改內存管理錯誤
14.3.2 用mpr和check定位內存錯誤
14.3.3 Electric Fence
14.3.4 使用Lint Brush
14.4 小結
第3部分 進程間通信和網絡編程
第15章 IPC入門:使用管道
15.1 管道使用簡介
15.1.1 無名管道
15.1.2 有名管道
15.2 小結
第16章 消息隊列
16.1 創(chuàng)建一個使用消息隊列示例程序
16.2 運行這個消息隊列示例程序
16.3 小結
第17章 共享內存
17.1 把Linux配置成使用共享內存
17.2 創(chuàng)建一個使用共享內存的例子程序
17.3 運行共享內存示例程序
17.4 小結
第18章 信號燈
18.1 使用信號燈的示例程序
18.2 運行信號燈示例程序
18.3 小結
第19章 TCP/IP和自接口編程
19.1 支持套接口編程的系統(tǒng)調用
19.1.1 socket
19.1.2 bind
19.1.3 listen
19.1.4 connect
19.1.5 recv
19.1.6 send
19.2 使用套接口的客戶/服務器例子程序
19.2.1 服務器例子程序
19.2.2 客戶例子程序
19.2.3 運行客戶和服務器例子程序
19.2.4 使用Web瀏覽器作為客戶運行服務器例子程序
19.3 一個簡單的Web服務器程序和Web客戶程序
19.3.1 實現一個簡單的Web服務器程序
19.3.2 實現一個簡單的Web客戶程序
19.3.3 測試這個Web服務器程序和Web客戶程序
19.3.4 使用Netscape Navigator作為客戶運行這個簡單Web服務器程序
19.4 小結
第20章 UDP:用戶數據協議
20.1 一個發(fā)送UDP數據的例子程序
20.2 一個接收UDP數據的例子程序
20.3 運行這兩個UDP例子程序
20.4 小結
第21章 使用多播套接口
21.1 把Linux配置成支持多播IP
21.2 幾個使用多播IP的例子程序
21.2.1 使用多播IP廣播數據的例子程序
21.2.2 監(jiān)聽多播IP廣播的例子程序
21.2.3 運行這兩個多播IP例子程序
21.3 小結
第22章 非阻塞套接口I/O
22.1 使用非阻塞套接口I/O的例子程序
22.2 運行這個非阻塞套接口I/O的例子程序
22.3 小結
第23章 用于TCP套接口的一個C++類庫
23.1 C++客戶/服務器類的設計
23.1.1 理解客戶程序的設計
23.1.2 理解服務器設計
23.2 C++客戶/服務器類的實現
23.2.1 實現客戶程序
23.2.2 實現服務器
23.3 測試這個客戶/服務器類
23.4 小結
第24章 使用庫
24.1 比較libc5和libc6
24.2 庫操作工具
24.2.1 理解nm命令
24.2.3 理解ldd命令
24.2.4 理解ldconfig
24.2.5 環(huán)境變量和配置文件
24.3 編寫并使用靜態(tài)庫
24.4 編寫并使用共享庫
24.5 使用動態(tài)加載的共享對象
24.5.1 理解dl接口
24.5.2 加載共享對象
24.5.3 使用共享對象
24 5.4 檢查錯誤
24.5.5 卸載共享對象
24.5.6 使用dl接口
24.6 小結
第25章 設備驅動程序
25.1 驅動程序類型
25.1.1 靜態(tài)鏈接的內核設備驅動程序
25.1.2 可加載的內核模塊
25.1.3 共享庫
25.1.4 無特權用戶模式程序
25.1.5 特權用戶模式程序
25.1.6 守護進程
25.1.7 字符設備與塊設備
25.2 演示用的硬件
25.2.1 步進電機工作原理
25.2.2 標準或雙向井口
25.3 開發(fā)配置
25.4 低層端口I/O
25.5 引發(fā)使用設備驅動程序的中斷
25.6 使用DMA訪問內存
25.7 一個簡單的用戶模式測試驅動程序
25.8 調試內核級驅動程序
25.9 下半部與上半部
25.10 創(chuàng)建一個內核驅動程序
25.10.1 查看源代碼
25.10.2 編譯驅動程序
25.10.3 使用內核驅動程序
25.10.4 未來發(fā)展方向
25.11 其它他信自來源
25.12 小結
第4部分 用戶界面編程
第26章 底層終端控制
26.1 終端接口
26.2 控制終端
26.2.1 屬性控制函數
26.2.2 速度控制函數
26.2.3 行控制函數
26.2.4 進程控制函數
26.3 使用終端接口
26.4 改變終端模式
26.5 使用terminfo
26.5.1 terminfo能力
26.5.2 使用terminfo
26.5.3 發(fā)揮terminfo能力
26.6 小結
第27章 使用ncurses操縱屏幕
27.1 ncurses簡史
27.2 使用ncurses編譯程序
27.3 調試ncursea程序
27.4 關于窗口
27.4.1 ncurses的窗口設計
274.2 ncurses的函數命名約定
27.5 初始化與終止
27.5.1 ncurses初始化結構
27.5.2 ncurses終止
27.5.3 說明ncurses的初始化與終止
27.6 輸入與輸出
27.6.1 輸出例程
27.6.2 輸入例程
27.7 顏色例程
27.8 窗口管理
27.9 其他實用函數
27.10 小結
第28章 X Window編程
28.1 X的概念
28.2 Xlib API
28.2.1 XopenDisplay
28.2.2 XcreateSimpleWindow和Xcreatewindow
28.2.3 映射窗口和撤消映射窗口
28.2.4 撤消窗口
28.2.5 事件處理
28.2.6 初始化圖形設備上下文和字體
28.2.7 在X窗口中繪圖
28.2.8 一個Xlib的示例程序
28.3 XI具包API
28.3.1 準備使用X工具包
28.3.2 使用X工具包設置窗口部件參數
28.4 小結
第29章 使用Athena和Motif的窗口部件
29.1 使用Athena的窗口部件
29.1.1 Athena的標簽窗口部件
29.1.2 Athena的命令按鈕窗口部件
29.1.3 Athena的列表窗口部件
29.1.4 Athena的文本窗口部件
29.1.5 Athena的簡單菜單窗口部件
29.2 使用Motif的窗口部件
29.2.1 Motif的標簽窗口部件
29.2.2 Motif的列表窗口部件
29.2.3 Motif的文本窗口部件
29.3 編寫一個定制的Athena窗口部件
29.3.1 使用fetch-url.c文件
29.3.2 使用URL.h文件
29.3.3 使用URLP.h文件
29.3.4 使用URL.C文件
29.3.5 測試URL窗口部件
29.4 在C++程序中同時使用Athena和Motif
29.5 使用封裝Athena窗口部件的一個C++類庫
29.5.1 Component類
29.5.2 PanedWindow類
29.5.3 Label類
29.5.4 Button類
29.5.5 Text類
29.6 小結
第30章 使用GTK進行GUI編程
30.1 GTK簡介
30.1.1 處理GTK中的事件
30.1.2 使用GTK的示例程序
30.1.3 其他GTK窗口部件
30.1.4 GTK容器窗口部件
30.2 用于顯示XML文件的GTK程序
30.2.1 XML簡介
30.2.2 James Clark的XML分析器Expat
30.2.3 GTK的XML顯示程序實現
30.2.4 運行GTK的XML顯示程序
30.3 使用Notebook窗口部件的GUI程序
30.3.1 Notebook窗口部件示例程序的實現
30.3.2 實現繪圖窗口部件
30.3.3 運行GTK Notebook窗口部件示例程序
第31章 使用Qt進行GUI編程
31.1 通過重載QWidget類方法處理事件
31.1.1 QWidget類概述
31.1.2 實現DrawWidget類
31.1.3 測試DrawWidget
31.2 使用Qt槽和信號處理事件
31.2.1 派生StateLCDWidget類
31.2.2 使用信號和糟
31.2.3 運行信號/槽示例程序
31.3 小結
第32章 使用Java進行GUI編程
32.1 Java簡介
32.1.1 Java是一種面向對象的語言
32.1.2 在Java中使用包
32.1.3 使用java讀寫文件
32.1.4 在Java中使用多個線程
32.1.5 在Java中進行套接口編程
32.2 使用Java編寫一個聊天引擎
32.3 AWT簡介
32.4 使用AWT編寫一個聊天程序
32.5 JFC簡介
32.6 使用JFC編寫一個聊天程序
32.7 使用本機Java編譯器
32.8 小結
第33章 OpenGL/Mesa圖形編程
33.1 OpenGL是一個圖形硬件的軟件接口
33.2 Orbits示例程序
33.2.1 為OpenGL圖形創(chuàng)建窗口以及對OpenGL初始化
33.2.2 使用GLUT創(chuàng)建簡單的三維物體
33.2.3 在三維空間中使用X-Y-Z坐標放置物體
33.2.4 沿著X-Y-Z一中的任何軸或所有軸旋轉物體
33.2.5 啟用材料屬性
33.2.6 啟用深度值測試
33.2.7 處理鍵盤事件
33.2.8 為獲得動畫效果對OPenGL圖形進行更新
33.2.9 示例程序清單
第5部分 特殊編程技術
第34章 使用GNU hash進行Shell編程
34.1 為何使用bashi
34.2 bash基礎知識
34.2.1 通配符
34.2.2 花括弧展開式
34.2.3 特殊字符
34.3 使用bash變量
34.4 使用bash操作符
34.4.1 字符串操作符
34.4.2 模式匹配操作符
34.5 流控制
34.5.1 條件執(zhí)行:if
34.5.2 確定性循環(huán):for
34.5.3 非確定性循環(huán):while和until
34.5.4 選擇結構:case和 select
34.6 shell函數
34.7 輸入與輸出
34.7.1 I/O重定向
34.7.2 字符串I/O
34.8 命令行處理
34.9 進程和作業(yè)控制
34.9.1 shell的信號處理
34.9.2 使用trap
34.10 小結
第35章 有關安全性的編程
35.1應用程序類型
35.1.1 setuid程序
35.1.2 網絡服務器(守護進程)
35.1.3 網絡客戶程序
35.1.4 郵件用戶代理程序
35.1.5 CGI程序
35.1.6 工具程序
35.1.7 應用程序
35.2 特殊的代碼問題
35.2.1 shell腳本和system()系統(tǒng)調用
35.2.2 來自不信任用戶的輸入
35.2.3 緩沖區(qū)溢出
35.2.4 環(huán)境變量
35.2.5 gethostbyname()函數
35.2.6 信號
35.2.7 user ID和group ID
35.2.8 函數庫的脆弱性
35.2.9 執(zhí)行其他程序
35.2.10 /tmp競爭
35.2.11 拒絕服務型攻擊
35.2.12 隨機數
35.2.13 令牌
35.1.14 密碼
35.2.15 文件名
35.2.16 符號鏈接
35.2.17 chroot()環(huán)境
35.2.18 分割程序
35.2.19 進程間通信
35.2.20 identd守護進程
35.2.21 TCP與UDP
35.2.22 動態(tài)與靜態(tài)內存分配
35.2.23 安全級別
35.2.24 POSIX.le的能力
35.3 擦除緩沖區(qū)
35.4 穿越防火墻提交HTML表單
35.5 竊聽、盜取及中間人攻擊
35.6 HTML服務器包含特性
35.7 預先派生子進程的服務器的問題
35.8 超時
35.9 三因素認證
35.10 可插入的認證模塊
35.11 一般的程序健壯性問題
35.12 加密技術
35.12.1 加密算法的類型
35.12.2 加密系統(tǒng)
35.12.3 加密的脆弱性
35.13 小結
第36章 調試:GNU gdb
36.1 為使用gdb進行編譯
36.2 使用基本的gdb命令
36.2.1 啟動gdb
36.2.2 在調試器中查看代碼
36.2.3 檢查數據
36.2.4 設置斷點
36.2.5 檢查并更改運行中的代碼
36.3 高級gdb概念和命令
36.3.1 變量的作用域和上下文
36.3.2 遍歷函數調用棧
36.3.3 操縱源文件
36.3.4 與Shell進行通信
36.3.5 附加到某個運行中的程序
36.4 小結
第6部分 補充內容
第37章 軟件包管理
37.1 理解tar文件
37.1.1 創(chuàng)建tar文件
34.1.2 更新tar文件
37.1.3 列出tar文件的內容
37.2 理解install命令
37.3 理解Red Hat軟件包管理器
37.3.1 最小要求
37.3.2 配置RPM
37.3.3 控制構造過程:使用spec文件
37.3.4 分析一個spec文件
37.3.5 構造軟件包
37.4 小結
第38章 建檔
38.1 手冊頁面
38.1.1 手冊頁面的組成
38.1.2 手冊頁面例子及解釋
38.1.3 使用groff命令
38.1.4 Linux約定
38.2 使用SGMLI具創(chuàng)建SGML文檔
38.2.1 SGML工具
38.2.2 SGML工具的標記
38.2.3 格式化SGML文檔
38.3 小結
第39章 許可證的發(fā)放
39.1 MIT/X風格的許可證
39.2 BSD風格的許可證
39.3 ArtistiC許可證
39.4 GNU通用公共許可證
39.4.1 GNU通用公共許可證(GPL)
39.4.2 GNU庫通用公共許可證(LGPL)
39.5 開放源代碼的定義
39.6 選擇正確的許可證
第7部分附錄
附錄A 符號表函數庫
A.1 可用的文檔
A.1.1 示例程序:userchange
A.1.2 定義一個符號表來描述一個結構類型
A.1.3 定義一個變量的隨機集
A.1.4 包含另一個符號表
A.1.5 出錯報告
A.1.6 智能指針
A.1.7 符號表庫函數
A.1.8 執(zhí)行例子
附錄B GNU通用公共許可證(General Public License )

本目錄推薦

掃描二維碼
Copyright ? 讀書網 hotzeplotz.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號