隨著電腦技術的高速發展,Linux系統在伺服器解決方案中的優勢越來越被開發者認同。在電腦就業市場上,基於Linux系統開發的人員需求量也不斷增加。其中,對Linux系統環境下C語言開發人員的需求尤為明顯。由於C語言本身在語法結構、語言風格和程式設計思想上的特點,使C語言一直被公認為難以學習、輕鬆掌握。
儘管Linux環境下C語言開發越來越被企業和開發人員認同,關心的人數也越來越多,但實際上,真正了解和掌握C語言開發的人卻很少。因此,筆者總結親身學習Linux系統函數介面的經驗,並結合自己多年從事Linux 環境下C語言應用程式開發的經驗,撰寫出這本能夠真正讓開發者掌握Linux環境下C語言程式設計技巧的書。
本書從實際開發者的角度全面介紹Linux環境下C語言程式設計的基礎知識,涉及Linux系統函數的各個面向,選擇目前最熱門、應用最廣的技術進行深入討論。筆者透過28章的學習規劃,讓讀者快速掌握Linux環境下C語言程式設計的基本知識和程式設計技巧。每個核心概念都使用通俗的語言進行解釋,透過實例讓讀者更直觀地掌握概念的含義,達到靈活使用Linux系統函數介面撰寫程式的目的。
目錄
Part 1 Linux下c語言基礎
01 Linux 簡介0P01
1.1 GNU 簡介
1.2 Linux 簡介
1.2.1 Linux 發展史
1.2.2 Linux 發行版本
1.2.3 Linux 核心版本
1.2.4 Linux 與UNIX 的關係
1.2.5 Linux 在伺服器方面的發展
1.2.6 Linux 在嵌入式系統方面的發展
1.2.7 Linux 在桌面系統方面的發展
1.3 Linux 環境下的其他程式設計語言
1.3.1 C++
1.3.2 Java
1.3.3 Perl
1.3.4 Python
1.3.5 Ruby
1.3.6 PHP
02 控制結構
2.1 goto 敘述
2.1.1 C 語言中的無條件跳躍
2.1.2 使用goto 敘述進行出錯處理
2.1.3 出錯處理的一般模型
2.2 C 語言中的分支結構
2.2.1 分支結構的翻譯
2.2.2 使用goto 敘述實現分支結構
2.3 逐位元運算
2.3.1 逐位元運算
2.3.2 && 運算的逐位元運算
2.3.3 || 運算的逐位元運算
2.4 C 語言中的迴圈結構
2.4.1 while 迴圈
2.4.2 do⋯while 迴圈
2.4.3 for 迴圈
2.5 switch 敘述
2.5.1 switch 敘述的應用
2.5.2 使用goto 敘述實現switch 敘述
2.6 最佳化控制結構
2.6.1 運算式最佳化——使用替換程式中的乘除法
2.6.2 運算式最佳化——常數折疊
2.6.3 運算式最佳化——使用數學公式
2.6.4 運算式最佳化——儲存問題
2.6.5 分支最佳化——改變判斷順序
2.6.6 分支最佳化——使用switch 敘述
2.6.7 迴圈最佳化——一次性計算
03 C語言中的函數03
3.1 函數的本質
3.2 變數的作用域和生命期
3.2.1 全域變數
3.2.2 區域變數
3.3 變數的初值
3.3.1 全域變數的初值
3.3.2 區域變數的初值
3.4 與函數有關的最佳化
3.4.1 函式呼叫與程式最佳化
3.4.2 變數儲存最佳化
3.5 撰寫多檔案程式——變數的儲存類別
3.5.1 儲存類別
3.5.2 static 變數的作用——改變變數的生命期
3.5.3 static 變數的作用——實現封裝和模組化設計
3.6 撰寫多檔案的程式——連結的作用
3.6.1 連結多個檔案
3.6.2 連結時符號解析規則
3.6.3 連結規則的應用
3.7 可變參數
3.7.1 可變參數的概念
3.7.2 實現一個簡單的可變參數的函數
3.7.3 可變參數實例
3.7.4 關於printf 函數的疑問——缺少整數參數
3.7.5 關於printf 函數的疑問——缺少字串位址參數
04 C語言中的指標與字串
4.1 sizeof 運算子
4.1.1 sizeof 運算子的應用——得到內建類型的大小
4.1.2 sizeof 運算子的應用——得到複合類型的大小
4.2 指標的應用
4.2.1 指標與別名陷阱
4.2.2 陣列的指標
4.2.3 指標的指標
4.2.4 指標與參數傳遞
4.2.5 指標類型的意義
4.2.6 void* 型指標
4.3 函數的指標
4.3.1 C 語言中的函數指標
4.3.2 函數指標的應用——回呼函數
4.3.3 函數指標陣列
4.4 字串
4.4.1 字串與字元陣列
4.4.2 字串與指標
4.4.3 限定修飾符const
4.4.4 const 關鍵字修飾指標——在指標定義之前
4.4.5 const 關鍵字修飾指標——在指標定義之中
4.4.6 const 關鍵字修飾指標——在指標定義之前和定義之中
4.4.7 使用const 關鍵字的意義
05 C語言的高級技術
5.1 結構體與共同體
5.1.1 結構體中成員變數的儲存分佈
5.1.2 記憶體對齊
5.2 位元運算
5.2.1 遮罩運算
5.2.2 不安全的位元運算
5.2.3 互斥運算的特性
5.2.4 移位元運算的陷阱
5.2.5 移位元運算的實例
5.3 預先處理
5.3.1 常用的程式碼組織形式
5.3.2 偵錯開關
5.4 C99 新標準關鍵字詳解
5.4.1 inline 關鍵字的概念
5.4.2 inline 關鍵字實例
5.4.3 inline 關鍵字使用總結
5.4.4 restrict 關鍵字的概念
5.4.5 restrict 關鍵字的應用
Part 2 C語言開發環境
06 vi 與vim 編輯器
6.1 vi 編輯器入門
6.1.1 vi 簡介
6.1.2 vi 的工作模式
6.2 vi 一般操作
6.2.1 進入vi
6.2.2 文字插入操作
6.2.3 文字刪除操作
6.2.4 文字複製操作
6.2.5 取消指令
6.2.6 重複指令
6.2.7 退出vi
6.3 vi 的增強操作
6.3.1 替換指令
6.3.2 游標移動
6.3.3 按行移動游標
6.3.4 按字移動游標
6.3.5 按句移動游標
6.3.6 按段移動游標
6.3.7 文字行的移動
6.3.8 文字的異行移動
6.3.9 螢幕捲動
6.3.10 尋找指令
6.3.11 替換指令
6.3.12 視窗的切分
6.3.13 設定環境
07 gcc 編譯器
7.1 初探gcc 編譯器
7.1.1 從經典的hello world 開始
7.1.2 gcc 編譯流程
7.2 gcc 常用選項
7.2.1 gcc 常用選項整理
7.2.2 -c 選項
7.2.3 -S 選項
7.2.4 -E 選項
7.2.5 -o 選項
7.2.6 -I 選項
7.2.7 -g 選項
7.3 連結原理
7.3.1 連結器的工作
7.3.2 目的檔案
7.3.3 ELF 格式的可重定位目的檔案
7.3.4 目的檔案中的符號表
7.3.5 重定位的概念
7.3.6 符號的重定位資訊
7.4 關於程式庫
7.4.1 使用程式庫的優勢
7.4.2 靜態程式庫的概念
7.4.3 建立靜態程式庫
7.4.4 使用靜態程式庫
7.4.5 動態程式庫的概念
7.4.6 建立動態程式庫
7.4.7 使用動態程式庫
7.5 gcc 工具鏈
08 makefile
8.1 makefile 檔案入門
8.1.1 makefile 檔案的組成內容
8.1.2 makefile 檔案包含
8.1.3 make 工具的退出碼
8.2 書寫makefile 規則
8.2.1 使用基本規則
8.2.2 使用隱式規則
8.2.3 使用虛擬目標
8.2.4 使用萬用字元
8.2.5 搜索原始檔案
8.3 使用指令
8.3.1 顯示指令
8.3.2 執行指令
8.3.3 指令出錯
8.4 使用變數
8.4.1 使用普通變數
8.4.2 變數中的變數
8.4.3 追加變數的值
8.4.4 自動化變數
8.5 使用條件判斷
8.5.1 條件運算式
8.5.2 運算式實例
8.6 使用函數
8.6.1 函式呼叫的語法
8.6.2 字串處理函數
8.6.3 檔案名操作函數
8.6.4 foreach 函數
8.6.5 if 函數
8.6.6 call 函數
8.6.7 origin 函數
8.6.8 shell 函數
8.7 makefile 實例
8.7.1 makefile 實例——專案中的總makefile
8.7.2 makefile 實例——makefile 模版
09 gdb
9.1 列出來源程式
9.1.1 不帶參數的list 指令
9.1.2 帶一個參數的list 指令
9.1.3 帶兩個參數的list 指令
9.2 執行程式的指令
9.3 操作中斷點的指令
9.3.1 設定中斷點
9.3.2 顯示目前gdb 的中斷點資訊
9.3.3 刪除指定的中斷點
9.3.4 禁止或啟用中斷點
9.3.5 清除中斷點
9.3.6 觀察點
9.3.7 設定中斷點實例
9.4 檢視執行時資料
9.4.1 資料觀察指令
9.4.2 對程式中函數的呼叫
9.4.3 檢視運算式的值
9.4.4 檢視陣列的值
9.4.5 變數的輸出格式
9.4.6 檢視記憶體
9.4.7 自動顯示變數
9.4.8 設定顯示選項
9.4.9 顯示變數的歷史記錄
9.4.10 檢視暫存器
9.4.11 檢視使用gdb 環境變數
9.4.12 檢視資料實例
9.5 改變程式的執行
9.5.1 修改變數的值
9.5.2 跳躍執行
9.5.3 訊號的產生及處理
9.5.4 強制呼叫函數
9.5.5 強制函數傳回
9.6 gdb 高級應用
9.6.1 產生core 檔案
9.6.2 追蹤堆疊上資料
9.6.3 綁定執行執行緒
9.6.4 原始檔案搜索
9.6.5 機器語言工具
9.6.6 其他有用的偵錯指令
Part 3 Linux 執行緒操作
10 執行緒環境
10.1 程式的啟動和退出
10.1.1 在shell 中啟動一個程式
10.1.2 載入一個程式
10.1.3 載入地址
10.1.4 退出程式
10.1.5 執行緒終止處理函數
10.2 Linux 執行緒記憶體管理
10.2.1 資料的內部儲存
10.2.2 C 程式的儲存版面配置——程式碼部分
10.2.3 C 程式的儲存版面配置——資料段和緩衝段
10.2.4 C 程式的儲存版面配置——Stack
10.2.5 C 程式的儲存版面配置——Heap
10.2.6 常數的儲存
10.2.7 動態記憶體管理
10.2.8 動態記憶體分配的深入研究
10.3 shell 環境
10.3.1 命令列參數
10.3.2 得到程式檔案名
10.3.3 環境變數
10.3.4 得到指定的環境變數
10.3.5 設定一個環境變數
10.3.6 得到執行緒結束狀態
10.3.7 使用errno 偵錯工具
10.3.8 輸出錯誤原因
10.4 全域跳躍
10.4.1 局部跳躍的局限性
10.4.2 使用全域跳躍
10.4.3 使用全域跳躍代替局部跳躍
11 執行緒環境
11.1 執行緒識別字
11.1.1 執行緒ID
11.1.2 執行緒中重要的ID 值
11.2 執行緒操作
11.2.1 建立一個執行緒
11.2.2 父子執行緒的共用資源
11.2.3 fork 函數的出錯情況
11.2.4 建立一個共用空間的子執行緒
11.2.5 在函數內部呼叫vfork 函數
11.2.6 退出執行緒
11.2.7 使用exit 函數檢查執行緒出錯資訊
11.2.8 exit 函數與核心函數的關係
11.2.9 設定執行緒所有者
11.2.10 偵錯多執行緒——設定追蹤流
11.2.11 偵錯多執行緒——使用gdb 的attach 指令
11.3 執行程式
11.3.1 執行一個新程式
11.3.2 執行解譯器檔案
11.3.3 在程式中執行shell 指令
11.3.4 實現system 函數
11.4 關係操作
11.4.1 等待執行緒退出
11.4.2 等待指定的執行緒
11.4.3 僵屍執行緒的概念
11.4.4 產生一個僵屍執行緒
11.4.5 避免僵屍執行緒的產生
11.4.6 輸出執行緒統計資訊
12 時間和日曆歷程
12.1 系統時間
12.2 日曆時間
13 訊號及訊號處理
13.1 訊號的基礎
13.1.1 訊號的基本概念
13.1.2 產生訊號
13.1.3 處理訊號
13.1.4 常用訊號的使用方法
13.2 訊號的影響
13.2.1 重入
13.2.2 最小操作
13.2.3 中斷系統呼叫
13.3 訊號處理函數
13.3.1 設定訊號處理函數
13.3.2 發送訊號
13.3.3 向執行緒本身發送訊號
13.3.4 設定Linux 計時器
13.3.5 定時等待I/O
13.3.6 暫停執行緒
13.3.7 執行緒休眠
13.4 訊號集與遮罩訊號
13.4.1 訊號集和訊號集處理函數
13.4.2 遮罩訊號
13.4.3 處理未決訊號
13.4.4 高級訊號註冊函數
13.4.5 訊號選項實例——SA_NOCLDWAIT 選項
13.4.6 訊號選項實例——SA_NODEFFER 選項
13.4.7 訊號選項實例——SA_RESETHAND 選項
14 執行緒間通訊
14.1 執行緒間通訊概述
14.1.1 執行緒間通訊簡介
14.1.2 執行緒間通訊的困難
14.1.3 IPC 的多種方式
14.2 管線
14.2.1 管線的概念
14.2.2 匿名半雙工管線
14.2.3 匿名半雙工管線的讀寫操作
14.2.4 建立管線的標準庫函數
14.3 FIFO 管線
14.3.1 FIFO 的概念
14.3.2 建立FIFO
14.3.3 FIFO 的讀寫操作
14.3.4 FIFO 的缺點
14.4 System V IPC/POSIX IPC
14.4.1 IPC 物件的概念
14.4.2 IPC 物件的問題
14.4.3 IPC 物件系統指令
14.5 共用記憶體
14.5.1 共用記憶體的概念
14.5.2 共用記憶體的建立
14.5.3 共用記憶體的操作
14.5.4 共用記憶體使用注意事項
14.6 訊號量
14.6.1 訊號量的概念
14.6.2 訊號量的建立
14.6.3 訊號量集合的操作
14.7 訊息佇列
14.7.1 訊息佇列的概念
14.7.2 建立訊息佇列
14.7.3 讀寫訊息佇列
15 執行緒
15.1 執行緒與處理程序
15.1.1 執行緒的概念
15.1.2 執行緒的優勢
15.2 執行緒識別字
15.3 執行緒基本操作
15.3.1 建立執行緒
15.3.2 向執行緒體函數傳遞參數
15.3.3 執行緒存取資源的限制
15.3.4 終止執行緒
15.3.5 正確得到執行緒退出資訊的方法
15.3.6 取消一個執行緒的執行
15.3.7 執行緒退出函數
16 執行緒高級操作
16.1 執行緒同步——使用互斥量
16.1.1 初始化與銷毀互斥量
16.1.2 得到與釋放互斥量
16.1.3 使用互斥量的實例
16.2 執行緒同步——使用讀寫入鎖
16.2.1 初始化與銷毀讀寫入鎖
16.2.2 得到與釋放互斥鎖
16.2.3 使用互斥量與讀寫入鎖的比較
16.3 執行緒屬性
16.3.1 建立和銷毀屬性結構
16.3.2 執行緒的分離狀態
16.3.3 分離一個已經建立的執行緒
16.3.4 執行緒堆疊的屬性
Part 4 Linux檔案操作
17 檔案I/O15 執行緒
17.1 檔案描述符號的概念
17.2 檔案I/O 操作
17.2.1 開啟一個檔案
17.2.2 開啟檔案的出錯情況
17.2.3 關閉一個檔案
17.2.4 建立一個新檔案
17.2.5 檔案定位
17.2.6 檔案截短
17.2.7 清空一個檔案
17.2.8 檔案的讀寫操作
17.2.9 檔案同步
17.3 檔案描述符號操作
17.3.1 複製檔案描述符號
17.3.2 I/O 重新導向概念及其應用
17.3.3 控制檔案
17.3.4 修改開啟檔案的檔案狀態
17.4 非阻塞檔案I/O
17.4.1 非阻塞I/O 的概念
17.4.2 以非阻塞方式開啟檔案
17.4.3 將一個開啟檔案設定為非阻塞方式
17.5 記憶體映射I/O
17.5.1 記憶體映射I/O 的概念
17.5.2 建立一個記憶體映射
17.5.3 取消一個記憶體映射
17.5.4 記憶體映射同步
17.5.5 更改記憶體映射的許可權
18 檔案管理
18.1 檔案狀態
18.2 檔案類型
18.3 檔案權限
18.3.1 存取權限
18.3.2 設定使用者ID 位和設定組ID 位
18.3.3 設定使用者ID 位的作用
18.3.4 使用設定使用者ID 位元的實例
18.4 檔案許可權操作
18.4.1 測試檔案存取權限
18.4.2 設定使用者ID 位與檔案許可權測試
18.4.3 使用檔案許可權遮罩字
18.4.4 在shell 中使用檔案許可權遮罩字
18.4.5 在程式中使用檔案許可權遮罩字
18.4.6 改變檔案存取權限
18.4.7 在shell 中改變檔案許可權
18.4.8 在程式中改變檔案許可權
18.4.9 改變一個開啟的檔案許可權
18.5 檔案系統結構
18.6 檔案的硬連結
18.6.1 建立一個硬連結
18.6.2 刪除一個硬連結
18.7 改變檔案所有者
18.8 操作檔案的時間
19 目錄操作
19.1 目錄的許可權
19.1.1 目錄的存取權限
19.1.2 測試目錄的存取權限
19.2 目錄操作
19.2.1 建立一個目錄
19.2.2 刪除一個目錄
19.2.3 目錄項結構
19.2.4 開啟與關閉目錄
19.2.5 讀取目錄
19.2.6 讀取目錄操作的實例——實現自己的ls 指令
19.2.7 得到目錄檔案的讀寫位置
19.2.8 定位目錄
19.2.9 返回目錄檔案
19.3 處理程序的工作目錄
19.3.1 工作目錄的概念
19.3.2 改變處理程序的工作目錄
19.3.3 得到處理程序的目前工作目錄
19.3.4 子處理程序工作目錄對父處理程序的影響
20 特殊檔案
20.1 符號連結操作
20.1.1 符號連結
20.1.2 符號連結的功能
20.1.3 建立符號連結
20.1.4 建立指向不存在檔案的符號連結
20.1.5 讀寫符號連結的目的檔案
20.1.6 讀寫多重符號連結的目的檔案
20.1.7 讀寫符號連結
20.1.8 取得符號連結的狀態
20.1.9 更改符號連結的所有者
20.2 proc 檔案系統
20.2.1 proc 檔案系統
20.2.2 常用的核心資訊
20.2.3 讀取核心資訊
20.2.4 處理程序狀態資訊
20.2.5 讀取處理程序狀態
20.2.6 proc 檔案系統變成實例——實現自己的ps 指令
21 基於串流的I/O
21.1 串流與緩衝
21.2 基於串流的檔案操作
21.2.1 開啟和關閉串流
21.2.2 檔案內容的實際寫入
21.2.3 以字元為單位讀寫資料
21.2.4 以行為單位讀寫資料
21.2.5 gets 函數的漏洞
21.2.6 單行讀取檔案內容
21.2.7 輸出xml 形式的設定檔
21.2.8 讀寫資料區塊
21.2.9 檔案讀寫實例——實現cp 指令
21.2.10 檔案讀寫實例——字元統計
21.2.11 檔案讀寫實例——目錄下所有檔案的字元統計
Part 5 Linux網絡編程
22 TCP 和UDP 協定
22.1 電腦網路的體系結構簡介
22.1.1 電腦網路架構簡介
22.1.2 OSI 參考模型中各層功能描述
22.1.3 TCP/IP 參考模型的各層功能描述
22.1.4 連線導向服務和無連接服務
22.2 Client/Server 方式簡介
22.3 使用者資料封包通訊協定UDP
22.3.1 使用者資料封包的格式
22.3.2 使用者資料封包核對總和的計算
22.3.3 UDP 使用者資料封包的特性及用途
22.4 傳輸控制協定 TCP
22.4.1 TCP 簡介
22.4.2 TCP 封包段的表頭
22.4.3 TCP 資料編號與確認
22.4.4 TCP 的流量控制與擁塞控制
22.4.5 TCP 的運輸連接管理
23 網路程式設計基礎
23.1 通訊端概念
23.2 準備工作
23.2.1 位元組序
23.2.2 地址格式
23.2.3 位址形式轉換
23.2.4 獲得主機資訊
23.2.5 位址映射
23.3 通訊端基礎程式設計
23.3.1 建立和銷毀通訊端描述符號
23.3.2 地址綁定
23.3.3 建立一個連接
23.3.4 最簡單的網路應用程式——伺服器端
23.3.5 最簡單的網路應用程式——用戶端
23.3.6 使用檔案讀寫函數讀寫通訊端
23.3.7 使用完整讀寫函數的網路應用程式
23.3.8 連線導向的資料傳輸
23.3.9 連線導向的網路應用程式——伺服器端
23.3.10 連線導向的網路應用程式——用戶端
23.3.11 不需連線的資料傳輸
23.3.12 不需連線的網路應用程式——伺服器端
23.3.13 不需連線的網路應用程式——用戶端
23.4 非阻塞通訊端
23.4.1 非阻塞網路應用程式——伺服器端
23.4.2 非阻塞網路應用程式——用戶端
24 網路程式設計進階
24.1 通訊端程式設計深入
24.1.1 bind 函數的作用
24.1.2 同時伺服器
24.1.3 UDP 協定的connect 函數應用
24.2 多路選擇I/O
24.2.1 多路選擇I/O 的概念
24.2.2 實現多路選擇I/O
24.2.3 使用多路選擇I/O 處理多個連接
24.2.4 遮罩訊號的多路選擇I/O
24.2.5 比較select 函數和pselect 函數
24.2.6 輪詢I/O
24.3 非網路通訊通訊端
24.3.1 非命名UNIX 域通訊端
24.3.2 命名UNIX 域通訊端
24.3.3 UNIX 域通訊端實例——伺服器端
24.3.4 UNIX 域通訊端實例——用戶端
25 網路程式設計實例--實現檔案傳輸程式
25.1 程式設計
25.1.1 整體程式設計
25.1.2 用戶端程式設計
25.1.3 伺服器端程式設計
25.2 檔案傳輸程式的實現
25.2.1 用戶端程式的實現——標頭檔
25.2.2 用戶端程式的實現——程式主函數
25.2.3 用戶端程式的實現——指令拆分函數
25.2.4 用戶端程式的實現——指令處理模組
25.2.5 伺服器端程式的實現——標頭檔
25.2.6 伺服器端程式的實現——程式主函數
25.2.7 伺服器端程式的實現——用戶端指令處理模組
25.3 測試和驗證
26 網路程式設計實例--簡單的Web 伺服器
26.1 程式設計
26.1.1 整體程式設計
26.1.2 步驟1——解析用戶端發送的內容
26.1.3 步驟2——尋找用戶端需要的檔案
26.1.4 步驟3——將用戶端資訊傳回
26.2 Web 伺服器的實現
26.2.1 Web 伺服器程式的實現——標頭檔
26.2.2 Web 伺服器程式的實現——程式主函數
26.2.3 Web 伺服器程式的實現——請求處理模組
26.3 測試和驗證
Part 6 shell 指令稿知識
27 shell 指令稿基礎
27.1 撰寫最簡單的shell 指令稿
27.1.1 使用shell 指令稿的原因
27.1.2 指令稿內容
27.1.3 執行一段指令稿
27.2 shell 中的變數
27.2.1 使用者自訂變數
27.2.2 參考變數
27.2.3 為運算式求值
27.2.4 變數的類型
27.2.5 操作自訂變數
27.2.6 位置變數
27.2.7 重新分配位置變數
27.3 退出狀態
27.4 條件測試
27.4.1 測試檔案狀態
27.4.2 測試時使用邏輯運算符號
27.4.3 字串測試
27.4.4 測試數值
28 shell 指令稿中的控制結構
28.1 shell 指令稿中的指令替換
28.2 分支結構
28.2.1 if/else 分支結構
28.2.2 多重分支結構
28.2.3 使用case 結構的分支敘述
28.2.4 在case 敘述中使用邏輯運算式
28.3 條件測試指令的值
28.3.1 測試整數與字串
28.3.2 測試字串和空值
28.3.3 測試未初始化的變數
28.3.4 測試“false”的值
28.4 循環結構
28.4.1 while 迴圈結構
28.4.2 until 迴圈結構
28.4.3 for 迴圈結構
28.4.4 break 和continue 指令
28.5 定義函數和使用函數
Part 1 Linux下c語言基礎
01 Linux 簡介0P01
1.1 GNU 簡介
1.2 Linux 簡介
1.2.1 Linux 發展史
1.2.2 Linux 發行版本
1.2.3 Linux 核心版本
1.2.4 Linux 與UNIX 的關係
1.2.5 Linux 在伺服器方面的發展
1.2.6 Linux 在嵌入式系統方面的發展
1.2.7 Linux 在桌面系統方面的發展
1.3 Linux 環境下的其他程式設計語言
1.3.1 C++
1.3.2 Java
1.3.3 Perl
1.3.4 Python
1.3.5 Ruby
1.3.6 PHP
02 控制結構
2.1 goto 敘述
2.1.1 C 語言中的無條件跳躍
2.1.2 使用goto 敘述進行出錯處理
2.1....
商品資料
出版社:佳魁資訊股份有限公司出版日期:2013-03-22ISBN/ISSN:9789865836092 語言:繁體中文For input string: ""
裝訂方式:平裝頁數:880頁
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。