Linux程式設計(第4版)

来源:https://www.cnblogs.com/liulangdemao/archive/2018/10/31/9886001.html
-Advertisement-
Play Games

時至今日,Linux系統已經從一個個人作品發展為可以用於各種關鍵任務的成熟、高效和穩定的操作系統,因為具備跨平臺、開源、支持眾多應用軟體和網路協議等優點,它得到了各大主流軟硬體廠商的支持,也成為廣大程式設計人員理想的開發平臺。 本書是Linux程式設計領域的經典名著,以簡單易懂、內容全面和示例豐富而 ...


時至今日,Linux系統已經從一個個人作品發展為可以用於各種關鍵任務的成熟、高效和穩定的操作系統,因為具備跨平臺、開源、支持眾多應用軟體和網路協議等優點,它得到了各大主流軟硬體廠商的支持,也成為廣大程式設計人員理想的開發平臺。

本書是Linux程式設計領域的經典名著,以簡單易懂、內容全面和示例豐富而受到廣泛好評。中文版前兩版出版後,在國內的Linux愛好者和程式員中也引起了強烈反響,這一熱潮一直持續至今。本書是國內讀者翹首以待的第4版,此次新版內容組織更加嚴謹,譯者更是細心雕琢,保留了這部權威著作的原汁原味。

對Linux所提供的功能全面而準確的闡述,以及貫穿全書的示常式序體驗,使本書不僅成為初學者的最佳Linux程式設計指南,而且是中高級程式員不可或缺的參考書。

 

需要學習的朋友可以通過網盤免費下載pdf版 (先點擊普通下載-----再選擇普通用戶就能免費下載了)

http://putpan.com/fs/5yib7ens5hu7e48d8/

《Linux程式設計》是我的Linux編程入門書籍,也是做為教材使用了一整個學期,在閱讀和學習這本書的時候產生了很多的疑問,書里也沒有對應的解答,直到……直到我看了APUE,帶著這些問題去學習APUE,產生了巨大的能量。總之,推薦這本書,但是這本書也只是入門書籍,站在《Linux程式設計》的肩膀上,學習APUE,在Linux的世界里遨游吧!

作者簡介  · · · · · ·

Neil Matthew 和Richard Stones世界知名的Linux/UNIX專家,有數十年Linux/UNIX開發經驗和從業經歷。他們使用過幾乎所有UNIX版本,並精通C/C++、LISP、Fortran、Perl、Tcl和Prolog等各種語言。他們從事過各種軟體項目,從實時嵌入式系統到會計系統和零售信息系統。除本書外,他們還合著了PostgreSQL、MySQL方面的圖書。

目錄  · · · · · ·

第1章 入門
1.1 UNIX、Linux和GNU簡介
1.1.1 什麼是UNIX
1.1.2 什麼是Linux
1.1.3 GNU項目和自由軟體基金會
1.1.4 Linux發行版
1.2 Linux程式設計
1.2.1 Linux程式
1.2.2 文本編輯器
1.2.3 C語言編譯器
1.2.4 開發系統導引
1.3 獲得幫助
1.4 小結
第2章 shell程式設計
2.1 為什麼使用shell編程
2.2 一點哲學
2.3 什麼是shell
2.4 管道和重定向
2.4.1 重定向輸出
2.4.2 重定向輸入
2.4.3 管道
2.5 作為程式設計語言的shell
2.5.1 互動式程式
2.5.2 創建腳本
2.5.3 把腳本設置為可執行
2.6 shell的語法
2.6.1 變數
2.6.2 條件
2.6.3 控制結構
2.6.4 函數
2.6.5 命令
2.6.6 命令的執行
2.6.7 here文檔
2.6.8 調試腳本程式
2.7 邁向圖形化:dialog工具
2.8 綜合應用
2.8.1 需求
2.8.2 設計
2.8.3 應用程式的說明
2.9 小結
第3章 文件操作
3.1 Linux文件結構
3.1.1 目錄
3.1.2 文件和設備
3.2 系統調用和設備驅動程式
3.3 庫函數
3.4 底層文件訪問
3.4.1 write系統調用
3.4.2 read系統調用
3.4.3 open系統調用
3.4.4 訪問許可權的初始值
3.4.5 其他與文件管理有關的系統調用
3.5 標準I/O庫
3.5.1 fopen函數
3.5.2 fread函數
3.5.3 fwrite函數
3.5.4 fclose函數
3.5.5 fflush函數
3.5.6 fseek函數
3.5.7 fgetc、getc和getchar函數
3.5.8 fputc、putc和putchar函數
3.5.9 fgets和gets函數
3.6 格式化輸入和輸出
3.6.1 printf、fprintf和sprintf函數
3.6.2 scanf、fscanf和sscanf函數
3.6.3 其他流函數
3.6.4 文件流錯誤
3.6.5 文件流和文件描述符
3.7 文件和目錄的維護
3.7.1 chmod系統調用
3.7.2 chown系統調用
3.7.3 unlink、link和symlink系統調用
3.7.4 mkdir和rmdir系統調用
3.7.5 chdir系統調用和getcwd函數
3.8 掃描目錄
3.8.1 opendir函數
3.8.2 readdir函數
3.8.3 telldir函數
3.8.4 seekdir函數
3.8.5 closedir函數
3.9 錯誤處理
3.9.1 strerror函數
3.9.2 perror函數
3.10 /proc文件系統
3.11 高級主題:fcntl和mmap
3.11.1 fcntl系統調用
3.11.2 mmap函數
3.12 小結
第4章 Linux環境
4.1 程式參數
4.1.1 getopt
4.1.2 getopt_long
4.2 環境變數
4.2.1 環境變數的用途
4.2.2 environ變數
4.3 時間和日期
4.4 臨時文件
4.5 用戶信息
4.6 主機信息
4.7 日誌
4.8 資源和限制
4.9 小結
第5章 終端
5.1 對終端進行讀寫
5.2 與終端進行對話
5.3 終端驅動程式和通用終端介面
5.3.1 概述
5.3.2 硬體模型
5.4 termios結構
5.4.1 輸入模式
5.4.2 輸出模式
5.4.3 控制模式
5.4.4 本地模式
5.4.5 特殊控制字元
5.4.6 終端速度
5.4.7 其他函數
5.5 終端的輸出
5.5.1 終端的類型
5.5.2 識別終端類型
5.5.3 使用terminfo功能標誌
5.6 檢測擊鍵動作
5.7 虛擬控制台
5.8 偽終端
5.9 小結
第6章 使用curses函數庫管理基於文本的屏幕
6.1 用curses函數庫進行編譯
6.2 curses術語和概念
6.3 屏幕
6.3.1 輸出到屏幕
6.3.2 從屏幕讀取
6.3.3 清除屏幕
6.3.4 移動游標
6.3.5 字元屬性
6.4 鍵盤
6.4.1 鍵盤模式
6.4.2 鍵盤輸入
6.5 視窗
6.5.1 WINDOW結構
6.5.2 通用函數
6.5.3 移動和更新視窗
6.5.4 優化屏幕刷新
6.6 子視窗
6.7 keypad模式
6.8 彩色顯示
6.9 pad
6.10 CD唱片應用程式
6.10.1 新CD唱片應用程式的開始部分
6.10.2 main函數
6.10.3 建立菜單
6.10.4 操作資料庫文件
6.10.5 查詢CD資料庫
6.11 小結
第7章 數據管理
7.1 記憶體管理
7.1.1 簡單的記憶體分配
7.1.2 分配大量的記憶體
7.1.3 濫用記憶體
7.1.4 空指針
7.1.5 釋放記憶體
7.1.6 其他記憶體分配函數
7.2 文件鎖定
7.2.1 創建鎖文件
7.2.2 區域鎖定
7.2.3 鎖定狀態下的讀寫操作
7.2.4 文件鎖的競爭
7.2.5 其他鎖命令
7.2.6 死鎖
7.3 資料庫
7.3.1 dbm資料庫
7.3.2 dbm常式
7.3.3 dbm訪問函數
7.3.4 其他dbm函數
7.4 CD唱片應用程式
7.4.1 更新設計
7.4.2 使用dbm資料庫的CD唱片應用程式
7.5 小結
第8章 MySQL
8.1 安裝
8.1.1 MySQL軟體包
8.1.2 安裝後的配置
8.1.3 安裝後的故障修複
8.2 MySQL管理
8.2.1 命令
8.2.2 創建用戶並賦予許可權
8.2.3 密碼
8.2.4 創建資料庫
8.2.5 數據類型
8.2.6 創建表
8.2.7 圖形化工具
8.3 使用C語言訪問MySQL數據
8.3.1 連接常式
8.3.2 錯誤處理
8.3.3 執行SQL語句
8.3.4 更多的函數
8.4 CD資料庫應用程式
8.4.1 創建表
8.4.2 添加數據
8.4.3 使用C語言訪問數據
8.5 小結
第9章 開發工具
9.1 多個源文件帶來的問題
9.2 make命令和makefile文件
9.2.1 makefile的語法
9.2.2 make命令的選項和參數
9.2.3 makefile文件中的註釋
9.2.4 makefile文件中的巨集
9.2.5 多個目標
9.2.6 內置規則
9.2.7 尾碼和模式規則
9.2.8 用make管理函數庫
9.2.9 高級主題:makefile文件和子目錄
9.2.10 GNU make和gcc
9.3 源代碼控制
9.3.1 RCS
9.3.2 SCCS
9.3.3 RCS和SCCS的比較
9.3.4 CVS
9.3.5 CVS的前端程式
9.3.6 Subversion
9.4 編寫手冊頁
9.5 發行軟體
9.5.1 patch程式
9.5.2 其他軟體發行工具
9.6 RPM軟體包
9.6.1 使用RPM軟體包文件
9.6.2 安裝RPM軟體包
9.6.3 創建RPM軟體包
9.7 其他軟體包格式
9.8 開發環境
9.8.1 KDevelop
9.8.2 其他開發環境
9.9 小結
第10章 調試
10.1 錯誤類型
10.2 常用調試技巧
10.2.1 有漏洞的程式
10.2.2 代碼檢查
10.2.3 取樣法
10.2.4 程式的受控執行
10.3 使用gdb進行調試
10.3.1 啟動gdb
10.3.2 運行一個程式
10.3.3 棧跟蹤
10.3.4 檢查變數
10.3.5 列出程式源代碼
10.3.6 設置斷點
10.3.7 用調試器打補丁
10.3.8 深入學習gdb
10.4 其他調試工具
10.4.1 lint:清理程式中的“垃圾”
10.4.2 函數調用工具
10.4.3 用prof/gprof產生執行存檔
10.5 斷言
10.6 記憶體調試
10.6.1 ElectricFence函數庫
10.6.2 valgrind
10.7 小結
第11章 進程和信號
11.1 什麼是進程
11.2 進程的結構
11.2.1 進程表
11.2.2 查看進程
11.2.3 系統進程
11.2.4 進程調度
11.3 啟動新進程
11.3.1 等待一個進程
11.3.2 僵屍進程
11.3.3 輸入和輸出重定向
11.3.4 線程
11.4 信號
11.4.1 發送信號
11.4.2 信號集
11.5 小結
第12章 POSIX線程
12.1 什麼是線程
12.2 線程的優點和缺點
12.3 第一個線程程式
12.4 同時執行
12.5 同步
12.5.1 用信號量進行同步
12.5.2 用互斥量進行同步
12.6 線程的屬性
12.7 取消一個線程
12.8 多線程
12.9 小結
第13章 進程間通信:管道
13.1 什麼是管道
13.2 進程管道
13.3 將輸出送往popen
13.3.1 傳遞更多的數據
13.3.2 如何實現popen
13.4 pipe調用
13.5 父進程和子進程
13.5.1 管道關閉後的讀操作
13.5.2 把管道用作標準輸入和標準輸出
13.6 命名管道:FIFO
13.6.1 訪問FIFO文件
13.6.2 高級主題:使用FIFO的客戶/伺服器應用程式
13.7 CD資料庫應用程式
13.7.1 目標
13.7.2 實現
13.7.3 客戶介面函數
13.7.4 伺服器介面server.c
13.7.5 管道
13.7.6 對CD資料庫應用程式的總結
13.8 小結
第14章 信號量、共用記憶體和消息隊列
14.1 信號量
14.1.1 信號量的定義
14.1.2 一個理論性的例子
14.1.3 Linux的信號量機制
14.1.4 使用信號量
14.2 共用記憶體
14.2.1 shmget函數
14.2.2 shmat函數
14.2.3 shmdt
14.2.4 shmctl
14.3 消息隊列
14.3.1 msgget函數
14.3.2 msgsnd函數
14.3.3 msgrcv函數
14.3.4 msgctl函數
14.4 CD資料庫應用程式
14.4.1 修改伺服器函數
14.4.2 修改客戶函數
14.5 IPC狀態命令
14.5.1 顯示信號量狀態
14.5.2 顯示共用記憶體狀態
14.5.3 顯示消息隊列狀態
14.6 小結
第15章 套接字
15.1 什麼是套接字
15.2 套接字連接
15.2.1 套接字屬性
15.2.2 創建套接字
15.2.3 套接字地址
15.2.4 命名套接字
15.2.5 創建套接字隊列
15.2.6 接受連接
15.2.7 請求連接
15.2.8 關閉套接字
15.2.9 套接字通信
15.2.10 主機位元組序和網路位元組序
15.3 網路信息
15.3.1 網際網路守護進程(xinetd/inetd)
15.3.2 套接字選項
15.4 多客戶
15.4.1 select系統調用
15.4.2 多客戶
15.5 數據報
15.6 小結
第16章 用GTK+進行GNOME編程
16.1 X視窗系統簡介
16.1.1 X伺服器
16.1.2 X客戶端
16.1.3 X協議
16.1.4 Xlib庫
16.1.5 X工具包
16.1.6 視窗管理器
16.1.7 創建GUI的其他方法——平臺無關的窗囗API
16.2 GTK+簡介
16.2.1 GLib類型系統
16.2.2 GTK+對象系統
16.2.3 GNOME簡介
16.2.4 安裝GNOME/GTK+開發庫
16.3 事件、信號和回調函數
16.4 組裝盒構件
16.5 GTK+構件
16.5.1 GtkWindow
16.5.2 GtkEntry
16.5.3 GtkSpinButton
16.5.4 GtkButton
16.5.5 GtkTreeView
16.6 GNOME構件
16.7 GNOME菜單
16.8 對話框
16.8.1 GtkDialog
16.8.2 模式對話框
16.8.3 非模式對話框
16.8.4 GtkMessageDialog
16.9 CD資料庫應用程式
16.10 小結
第17章 用Qt進行KDE編程
17.1 KDE和Qt簡介
17.2 安裝Qt
17.3 信號和槽
17.4 Qt構件
17.4.1 QLineEdit
17.4.2 Qt按鈕
17.4.3 QComboBox
17.4.4 QListView
17.5 對話框
17.5.1 QDialog
17.5.2 QMessageBox
17.5.3 QInputDialog
17.5.4 使用qmake簡化makefile文件的編寫
17.6 KDE的菜單和工具欄
17.7 使用KDE/Qt編寫CD資料庫應用程式
17.7.1 主視窗
17.7.2 AddCdDialog
17.7.3 LogonDialog
17.7.4 main.cpp
17.8 小結
第18章 Linux標準
18.1 C編程語言
18.1.1 發展歷史簡介
18.1.2 GNU編譯器集
18.1.3 gcc選項
18.2 介面和LSB
18.2.1 LSB標準函數庫
18.2.2 LSB用戶和組
18.2.3 LSB系統初始化
18.3 文件系統層次結構標準
18.4 更多標準
18.5 小結  

需要IT編程經典書籍資源大合集百度網盤鏈接的加qq 2057904338,另本人願意有償帶小白學python,幫助你答疑解惑,幫助你解決問題,指導你找工作,帶你入行。相信我有人帶著你的話可以少走彎路,成功入行拿高薪。北京地區周六日可上門指導,非北京線上指導。本人前每日優鮮後端工程師,土木專業自學python成功轉行,月薪5位數,性格安靜,誠信正直,想學的加qq。

另閑聊的也可加,就當交個朋友吧!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 步驟: 1. 打開visual studio開發工具 2. 選擇文件>新建>項目 如下圖所示: 3. 選擇window金典桌面>控制台應用程式 並填寫好想項目名稱和選擇項目存儲地址(註:項目名稱和項目存儲地址都可以是預設的) 4. 創建好預設代碼如下圖: 5 編寫一個簡單的hello Word,實現 ...
  • 概述 在文本框中我們可以實現的操作有很多,如插入文字、圖片、設置字體大小、顏色、文本框背景填充、邊框設置等。下麵的示例中,將介紹通過C# 在PPT幻燈片中插入幻燈片的方法。 示例中包含了以下要點: 插入文本到文本框 設置邊框顏色、粗細 文本框背景色填充 設置文本框旋轉 設置文本框陰影效果 使用工具: ...
  • 大家都應該比較熟悉NLOG,我們知道log4net和nlog,也有其它的記日誌框架。目前我們的生產環境使用nlog,而且對Exceptionless的對接也是無縫的。可能有人會問為什麼不用ELK,主要是目前覺得Exceptionless足夠我們生產使用,後期看項目擴容度決定是否替換,言歸正傳,需要註 ...
  • 一 項目結構 1> 介面項目 .net core類庫 2> Grains實現項目 .net core類庫 3> 服務Host .net core console application 4> 服務調用者Client .net core console application with tcp 5> ...
  • 在我們努力[完成下一個 minor 版本的 ASP.NET Core](https://blogs.msdn.microsoft.com/webdev/2018/10/17/asp-net-core-2-2-0-preview3-now-available/) 的同時,我們也在對下一個 major ... ...
  • 先分析需求 在MVC項目中,我們如果有兩個Areas。比如Test和DEMO。我們的訪問地址應該是 http://localhost:8098/test http://localhost:8098/demo 如果我們綁定功能變數名稱後想實現這樣訪問 http://test.abc.com:8098/ htt ...
  • 本文主要介紹瞭如何在沒有有線網的情況下安裝Kali Linux 的無線網卡驅動,主要原理是通過從源網站直接下載缺失的軟體包,希望能夠幫到大家! ...
  • 在linux中,我們有的時候發現linux無法刪除一個文件或者目錄。 huskiesir第一次遇見這個問題還是在一次伺服器被不法分子入侵之後的事情,我就發現某個進程很多,根據進程的名字,我搜索關鍵字找到了某個a.sh文件。 於是huskiesir就用rm -rf a.sh,結果居然是顯示 rm: 無 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...