《Linux C編程從入門到精通(含DVD光盤1張)》以Ubuntu 11.04為平臺,系統地介紹了Linux下用C語言進行程序設計的方法,并通過列舉大量的程序實例,使讀者快速掌握在Linux下進行C語言程序開發的方法和技巧,并具備開發大型應用程序的能力。
《Linux C編程從入門到精通(含DVD光盤1張)》內容豐富,主要包括Linux基礎知識介紹,Linux下的C語言編譯器、調試器、程序維護工具及集成開發環境的使用方法,Linux下通過C語言進行文件操作和目錄操作的方法,標準I/O庫函數,進程概念、進程操作及進程間通信的方法,線程操作,用C語言進行網絡編程、數據庫編程及GUI編程的方法等。
第1章 Linux基礎知識
1.1 Linux簡介
1.1.1 Linux的起源
1.1.2 Linux的特點
1.1.3 Linux的版本
1.1.4 Linux的發展前景
1.2 Linux的安裝
1.2.1 發行版本的選擇
1.2.2 安裝虛擬機軟件
1.2.3 安裝Ubuntu
1.3 Linux系統的常用命令
1.3.1 了解Shell
1.3.2 進入Shell命令行界面
1.3.3 文件操作命令
1.3.4 目錄及其操作命令
1.3.5 文件壓縮打包命令
1.3.6 聯機幫助命令
1.3.7 用戶操作命令
1.3.8 關機和重啟計算機命令
1.4 小結
習題
第2章 Linux下的C語言編程環境
2.1 Linux編程簡介
2.2 Linux下的C語言開發環境
2.3 Linux C語言程序的開發過程
2.4 編譯器gcc的使用
2.4.1 Ubuntu下gcc的安裝與設置
2.4.2 gcc的使用
2.5 make工具及使用
2.5.1 make命令和Makefile
2.5.2 Makefile的規則
2.5.3 Makefile中的變量
2.5.4 偽目標
2.5.5 條件語句
2.5.6 調試make
2.6 使用autoconf
2.6.1 創建configure腳本
2.6.2 編寫configure.in文件
2.6.3 使用autoscan創建configure.in文件
2.6.4 用autoconf創建configure
2.6.5 更新configure腳本
2.7 使用automake
2.7.1 automake的工作流程
2.7.2 使用automake生成Makefile.in
2.8 使用gdb調試程序
2.8.1 初次使用gdb
2.8.2 gdb的基本命令
2.8.3 gdb的調用
2.8.4 gdb運行模式的選擇
2.9 IDE工具CodeBlocks
2.9.1 CodeBlocks的安裝
2.9.2 CodeBlocks的使用
2.10 小結
習題
第3章 Linux下的文件編程
3.1 概述
3.1.1 超級塊
3.1.2 索引節點
3.1.3 文件類型
3.2 文件描述符
3.3 基本文件I/O操作
3.3.1 open函數
3.3.2 close函數
3.3.3 read函數
3.3.4 write函數
3.3.5 creat函數
3.3.6 lseek函數
3.4 文件高級操作
3.4.1 文件模式
3.4.2 確定和改變文件模式
3.4.3 查詢文件信息
3.4.4 文件其他操作
3.4.5 目錄文件操作
3.4.6 特殊文件操作
3.5 小結
習題
第4章 標準I/O庫
4.1 概述
4.2 流和FILE對象
4.3 打開和關閉流
4.4 讀和寫流
4.4.1 字符I/O
4.4.2 行I/O
4.4.3 塊I/O
4.5 流文件定位
4.6 文件結束和錯誤
4.7 流緩沖
4.8 格式化I/O
4.8.1 格式輸出
4.8.2 格式輸入
4.9 臨時文件
4.10 小結
習題
第5章 進程操作
5.1 進程概述
5.1.1 進程的基本概念
5.1.2 Linux進程
5.1.3 進程的識別號
5.1.4 進程調度
5.2 進程控制
5.2.1 進程的創建
5.2.2 exec函數
5.2.3 結束進程
5.2.4 進程等待
5.2.5 system函數
5.2.6 進程的用戶標識號管理
5.2.7 進程標識號管理
5.3 綜合應用實例
5.4 小結
習題
第6章 進程間通信
6.1 進程間通信機制概述
6.1.1 信號
6.1.2 管道
6.1.3 System V IPC機制簡介
6.2 信號處理
6.2.1 信號類型
6.2.2 處理信號的系統函數
6.2.3 信號集
6.2.4 發送信號
6.3 管道
6.3.1 基本概念
6.3.2 管道的創建
6.3.3 創建管道的簡單方法
6.3.4 命名管道
6.4 System V IPC機制
6.4.1 基本概念
6.4.2 消息隊列
6.4.3 信號量
6.4.4 共享內存
6.4.5 綜合應用實例
6.5 小結
習題
第7章 線程操作
7.1 線程概述
7.1.1 線程的基本概念
7.1.2 用戶態線程與內核態線程
7.2 線程管理
7.2.1 創建線程和結束線程
7.2.2 掛起線程
7.2.3 線程同步
7.2.4 取消線程和取消處理程序
7.2.5 線程特定數據的處理函數
7.2.6 線程屬性
7.3 小結
習題
第8章 網絡編程
8.1 概述
8.2 TCP/IP基礎
8.2.1 參考模型
8.2.2 Linux中TCP/IP網絡的層結構
8.3 BSD套接字接口
8.4 客戶機/服務器模式
8.5 套接字網絡編程
8.5.1 套接字編程的基本流程
8.5.2 套接字地址
8.5.3 字節順序
8.5.4 字節處理函數
8.5.5 面向連接的基本套接字函數
8.5.6 其他套接字操作函數
8.5.7 數據報套接字操作
8.6 小結
習題
第9章 數據庫編程
9.1 數據庫基本概念
9.1.1 數據與數據庫
9.1.2 數據庫管理系統
9.1.3 數據庫語言
9.1.4 數據庫系統
9.1.5 主要數據模型
9.2 SQL簡介
9.2.1 數據庫表格
9.2.2 數據查詢
9.2.3 創建表格
9.2.4 向表格中插入數據
9.2.5 更新記錄
9.2.6 刪除記錄
9.2.7 刪除數據庫表格
9.3 MySQL數據庫
9.3.1 MySQL的安裝
9.3.2 MySQL管理
9.4 用C語言訪問MySQL數據庫
9.4.1 連接數據庫
9.4.2 錯誤處理
9.4.3 執行SQL語句
9.5 小結
習題
第10章 Linux下的GTK+/GNOME編程
10.1 X Window簡介
10.1.1 X服務器
10.1.2 X協議
10.1.3 Xlib庫
10.1.4 X客戶
10.2 GTK+/GNOME簡介
10.3 安裝GTK+/GNOME庫
10.4 GTK+編程
10.4.1 第一個GTK+程序
10.4.2 數據類型
10.4.3 信號和事件
10.4.4 布局管理
10.4.5 菜單和工具欄
10.4.6 對話框構件
10.4.7 文本構件
10.4.8 使用GTK+編寫GNOME程序
10.5 小結
習題
第11章 綜合案例
11.1 系統框架
……
2.6.4用autoconf創建configure
有了configure.in文件后,就可以開始生成自動配置configure腳本了。要生成configure,只需要不帶參數地運行程序autoconf,autoconf將使用m4宏處理器處理configure.in文件。如果提供了文件參數,autoconf將讀入指定的文件而不是默認的configure.in文件,并且把配置腳本輸出到文件或設備而不是configure中。如果為autoconf提供參數“_”,它將從標準輸入,而不是configure.in中讀取并且把配置腳本輸出到文件或設備中。
autoconf的宏定義在幾個文件中,有些文件是與autoconf一同發布的。autoconf運行時首先讀入這些文件,然后在包含了發布的autoconf宏文件的目錄中尋找可能出現的文件acsite.m4,并且在當前目錄中尋找可能出現的文件aclocal.m4。除了autoconf中所定義的宏外,還可以把其他需要的宏定義放在這些文件中,如果宏在多個文件中被重復定義,那么后面的定義將覆蓋前面的定義。
2.6.5 更新configure腳本
如果有大量由autoconf生成的configure腳本,程序autoreconf可以簡化一些工作。它重復地運行autoconf(在適當的情況下還運行autoheader)來重新創建以當前目錄為根的目錄樹的autoconf configure腳本和配置頭文件。在默認情況下,它只重新創建那些比對應的configure.in或aclocal.m4舊的文件。在文件沒有被改變的情況下,autoheader并不改變它的輸出文件時間戳(Timestamp),這可以使工作量最小化。如果安裝了新版本的autoconf,可以使用選項-forece調用autoreconf而重新創建所有的文件。
在同一個目錄樹中,autoreconf不支持兩個目錄作為同一個大包的一部分,也不支持每個目錄都是獨立包。如果使用了-10caldir選項,它假設所有的目錄都是同一個包的一部分:如果沒有使用—localdir,它假設每個目錄都是一個獨立的包。
2.7 使用automake
Makefile基本構造雖然簡單,但是剛開始學習寫Makefile時會感到沒有規范可循,每個人寫出來的Makefile都不太一樣,不知道從何下手,而且常常會受限于自己的開發環境,只要環境變量不同或路徑改一下,可能就得修改Makefile。雖然目前根據“GNU Makefile慣例”制定出一些使用GNU程序設計時寫makeflle的一些標準和規范,但是內容很長而且很復雜,并且經常做些調整,為了減輕編寫Makefile的工作量,因而有了Automake。
……