官术网_书友最值得收藏!

版權信息

書名:Linux程序設計(第4版)

作者:[英]Neil Matthew Richard Stones

譯者:陳健,宋健建

出版社:人民郵電出版社

出版時間:2010-06

ISBN:9787115228215

本書由人民郵電出版社授權上海閱文信息技術有限公司進行制作與發行

前言

歡迎閱讀本書第4版,這是一本針對在Linux系統和其他UNIX風格的操作系統上進行程序開發的易于使用的指南性讀物。

在本書中,我們的目標是介紹對于Linux程序員來說非常重要的主題,這些主題的涵蓋面非常廣泛。書名中的“beginning”更多的是指書中的內容而不是讀者的技能。我們對本書的內容組織進行了精心的安排,以幫助讀者更多地了解Linux所提供的功能,而不管讀者現有的經驗有多少。Linux程序設計是一個很大的領域,我們的目標是對廣泛領域中的大量主題都進行介紹,從而讓讀者在每個主題上都具備足夠的入門知識。

讀者對象

如果你是一位程序員,希望利用Linux(或UNIX)提供給軟件開發者的工具來加快程序開發的進度,盡量減少編程時間并讓你的程序充分利用Linux系統所提供的功能,那么本書將非常適合你。書中明確清晰的解釋和分步驟的實驗,將幫助你迅速提高編程能力和掌握所有的關鍵技術。

我們假設讀者具備一些C或C++語言的編程經驗,這些經驗可能來自Windows系統或其他一些操作系統。但我們會盡量保持書中示例程序的簡單,即便你不是一個C語言編程專家,也可以輕松地閱讀本書。如果存在需要直接比較Linux程序設計和C/C++程序設計的情況,我們都會在書中指出。

如果你剛開始學習Linux,請注意,這不是一本介紹Linux安裝和配置的圖書。如果你想多學習一些Linux系統管理方面的知識,請閱讀其他的參考書籍,如Christopher Negus的Linux Bible 2007 Edition Wiley, ISBN 978-0470082799)。

本書的目標是作為一本教程,向讀者介紹大多數Linux系統上都有的各種工具和函數/函數庫集,同時本書也可以作為一本方便使用的參考手冊。本書的特點是簡單易懂、內容廣泛、示例豐富。

主要內容

本書希望讓你達到以下幾個學習目標。

? 掌握標準Linux C語言函數庫和由各種Linux或UNIX標準指定的其他工具的使用方法。

? 掌握如何使用大多數標準Linux開發工具。

? 學會通過DBM和MySQL數據庫系統存儲Linux中的數據。

? 理解如何為X視窗系統建立圖形用戶界面。我們將同時使用GTK(GNOME環境的基礎)和Qt (KDE環境的基礎)函數庫。

? 擁有開發自己的實際應用程序的信心和能力。

在討論這些主題時,我們首先介紹編程理論,然后通過適當的例子和清晰的解釋來闡明它。通過這種方式,你可以在第一遍的學習中就能夠迅速掌握相關知識。如有必要,你還可以回顧這些內容以重溫所有的基本要素。

書中小示例程序主要是為了演示一組函數的用法或某些新概念的實際使用情況。貫穿全書有一個大型的示例項目:一個簡單的用于記錄音樂CD詳細資料的數據庫應用程序。隨著知識面的擴展,你可以按照自己的意愿開發、重新實現和擴展這個項目。雖然如此,這個CD應用程序對本書的任何一章來說都不是必需的,所以只要你愿意也可以忽略它,但我們認為它對書中討論的技術提供了一些有用的和深入的示范,并且它還有助于講解每個高級主題。我們對這個應用程序的第一次討論出現在本書第2章的結尾處,它顯示了一個非常大的shell腳本是如何組織的,shell如何處理用戶輸入、如何構造菜單以及如何存儲和檢索數據。

在簡要介紹完編譯程序、鏈接函數庫和訪問在線手冊的基本概念后,將全面介紹shell編程。然后你將投入到C語言程序設計中,我們在這里討論的內容包括文件操作、從Linux環境中獲取信息、處理終端的輸入輸出和curses函數庫(它使得交互式的輸入和輸出更易于管理)。最后你將用C語言重新實現CD應用程序。應用程序的設計方法沒有變化,但新的代碼中將用curses函數庫提供一個基于屏幕的用戶界面。

接下來我們討論數據管理。為了學習dbm數據庫函數庫的使用方法,我們將再次重新實現這個應用程序,但這次實現所采用的設計方法將貫穿本書后續的一些章節。在其后的一章中,我們將介紹數據是如何使用MySQL存儲在一個關系數據庫中的,并且我們還將在該章的稍后部分重新使用這種數據存儲技術,以便讀者了解兩種技術的區別。隨著這些應用程序的規模越來越大,我們接下來需要介紹調試、源代碼控制、軟件發行和makefile文件等具體內容。

接下來,你將看到不同的Linux進程是如何使用各種技術進行通信的,以及Linux程序是如何使用套接字來支持不同機器之間的TCP/IP網絡通信的,包括與使用不同處理器架構的機器之間通信的問題。

在掌握了Linux程序設計的基礎之后,我們開始討論圖形化程序的創建方法。我們將通過兩章的篇幅來介紹相關內容。首先介紹GTK+工具包,它是GNOME開發環境的基礎;然后介紹Qt工具包,它是KDE開發環境的基礎。

在本書的最后一章,我們簡要介紹了Linux的標準,正是這些標準使得不同廠商的Linux發行版保持了足夠的相似性,從而使我們編寫的程序可以在不同的Linux發行版上運行。

正如你所期望的,本書還包括許多其他內容,但我們希望這里給出的簡單介紹能夠讓你對將討論的內容有一個清晰的概念。

準備工作

在本書中,我們將給予讀者一種Linux程序設計的體驗。為了更好地理解各章的內容,你應該在閱讀本書時,實際運行書中的程序示例。這將提供一個很好的編程實踐體驗,并將啟發你創建自己的程序。我們希望讀者一邊閱讀一邊在Linux系統上實際操作。

Linux可以用在許多不同的系統上。其適應性使得只要設備中有一個處理器芯片,Linux就可以以這樣或那樣的方式在其上運行。可以運行Linux系統的設備包括基于Alpha、ARM、IBM Cell、Itanium、PA-RISC、PowerPC、SPARC、SuperH、68k以及各種x86系列處理器(32位和64位)的計算機。

我們使用兩臺不同配置的Linux系統來編寫本書并開發書中的程序示例,所以我們可以確信,只要你的機器可以運行Linux,你就可以很好的利用本書。此外,在本書的技術審核階段,我們還在其他版本的Linux系統中測試了書中的全部代碼。

我們在編寫本書時主要使用的是基于x86的系統,但我們所討論的內容很少是只適用于x86的。雖然在一臺有8 MB內存的486機器上運行Linux也是可能的,但要想成功地運行一個現代Linux發行版并運行本書中的程序示例,我們建議你使用Fedora、openSUSE或Ubuntu等比較流行的Linux發行版的最新版本,并采用它們所推薦的硬件配置。

在軟件需求方面,我們建議使用你偏愛的Linux發行版的最新版本,并應用當前更新(大多數廠商會通過自動更新的方式在線提供這些更新)以保證你的系統打上了所有的補丁。Linux和GNU工具集都是以GNU通用公共許可證(GPL)的形式發布的。一個典型的Linux發行版的大多數其他組件也都使用GPL許可證或其他開放源碼許可證之一,這意味著它們都具有某些特性,其中之一就是自由。它們的源代碼總是可以被自由獲取,沒有人可以剝奪這種自由。關于GPL的詳細資料請見http://www.gnu.org/licenses/。關于開放源碼定義和它所使用的各種許可證的詳細資料請見http://www.open-source.org/。你總是可以獲取到對GNU/Linux的支持——你可以自己研究源代碼、雇用他人或購買廠商的付費支持。

源代碼

當試驗本書中的程序示例時,你可以手工輸入所有的代碼,也可以使用和本書配套的源代碼文件。本書使用的所有程序源代碼都可以從http://www.wrox.com上下載。在該網站中,你只需找到本書所在頁面(通過搜索框或使用書名列表),然后在本書內容介紹頁面點擊Download Code(下載代碼)鏈接,就可以獲得本書的所有源代碼了。


因為很多圖書都有類似的書名,所以通過ISBN搜索圖書是最佳的方式。本書的ISBN為978-0-470-14762-7。


在下載了源代碼之后,你就可以用壓縮工具對其解壓。此外,你也可以訪問Wrox代碼下載主頁(http://www.wrox.com/dynamic/books/download.aspx),獲取本書和其他Wrox圖書的源代碼。

代碼下載說明

我們盡力向讀者提供能夠清晰闡明書中所討論概念的示例程序和代碼片段。需要指出的是,為了盡可能地解釋清楚書中介紹的新功能,我們將采用一種或兩種代碼風格。

特別要指出的是,我們并沒有對調用的每個函數的返回值進行檢查,以判斷它是否與我們預期的一樣。在真正的應用程序代碼中,我們肯定要做這樣的檢查工作,而讀者也應該對錯誤處理采取嚴格的措施。(本書的第3章將討論一些捕獲和處理錯誤的方法。)

GNU通用公共許可證

書中的所有源代碼都遵循GNU通用公共許可證第二版(http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)的條款。下面的許可說明適用于本書所有的源代碼:

排版約定

為了幫助讀者更好地理解本書內容,隨時把握學習重點,全書將使用以下一些排版約定:

書中像這樣的文字框中記錄的是一些重要的、不應該被忘記的、非常關鍵的信息。它們與周邊的內容直接相關。

對當前討論內容的技巧、提示、竅門和旁白都會像這樣縮進放置并將字體設置為楷體。

當我們進行介紹時,我們將把一些重要的單詞用楷體印刷,需要讀者輸入的字符用粗體印刷。組合鍵的格式為:Ctrl+A。

我們使用3種不同的方式來印刷代碼和終端會話:

對于命令行,它的樣式如上面代碼的頂部所示,而它的輸出結果則以常規風格印刷。字符$是提示符(如果命令需要超級用戶來執行,則提示符會用字符#來替代),粗體字的文本是需要讀者輸入的命令,然后按下回車鍵執行該命令。其后采用相同字體但不是黑體的所有文本都是該黑體字命令的輸出。在上面的例子中,你輸入命令who,然后將在命令下面看到輸出的結果。

Linux定義的函數和結構的原型使用黑體字來印刷,如下所示:

在我們的代碼示例中,帶有底紋的部分是新的、重要的內容,如下所示:

而如果代碼采用的是如下所示不帶底紋的風格,就表示它的內容沒有那么重要:

當程序代碼的內容在一章中有增加時,后來添加的代碼首次出現時以加底紋的風格給出,其后就不再加底紋了。例如,一個新的程序如下所示:

如果我們在該章的稍后部分增加了這個程序的內容,新增代碼將帶有底紋:

我們要提到的最后一個約定是,我們在每個程序示例開始之前都會加上一個“實驗”標題,其目的是為了將代碼分隔開,突出顯示其組成部分,同時可以顯示應用程序的進度。當我們覺得有必要時,還會在代碼之后加上“實驗解析”部分,來解釋代碼中與前面理論有關的關鍵之處。我們發現這兩個約定有助于把非常難于理解的代碼清單分解為相對簡單的部分。

勘誤表

我們已經盡力保證本書的文字和程序代碼沒有任何錯誤。但是人無完人,錯誤總是難免的。如果你找到了本書中的錯誤,比如拼寫錯誤或代碼錯誤,我們將非常感謝可以得到你的反饋。指正錯誤不僅可以為其他讀者節省時間,同時也可以幫助我們提高圖書的品質。

要找到本書的勘誤表,請訪問http://www.wrox.com,然后使用搜索框或書名列表來找到本書。在本書的頁面,點擊Book Errata(圖書勘誤表)鏈接。在該鏈接指向的頁面中,你可以看到由Wrox編輯發布的所有針對本書提交的勘誤。你也可以通過網址http://www.wrox.com/misc-pages/booklist.shtml找到一個完整的圖書列表,其中包括指向每本書勘誤表的鏈接。

如果在本書的勘誤表中沒有找到你發現的錯誤,可以訪問網址http://www.wrox.com/contact/techsupport.shtml,填寫該頁面上的表格以將你發現的錯誤發送給我們。我們將檢查你發送過來的信息,如果它是正確的,我們將在本書的勘誤表中發布該信息,并在本書的下一版中修正該問題。

p2p.wrox.com

為參與作者和同行的討論,你可以加入P2P論壇,它的網址是p2p.wrox.com。這個論壇是一個基于Web的系統,你可以在其上發布與Wrox圖書和相關技術有關的消息,并與其他讀者和技術用戶交流。這個論壇還提供了訂閱功能,當有你感興趣的主題發布時,論壇會通過電子郵件把這些消息發送給你。Wrox的作者、編輯、其他行業專家和與你一樣的讀者都會到這個論壇探討一些問題。

http://p2p.wrox.com中,你將找到很多不同的論壇,這些論壇不僅有助于你閱讀本書,而且也有助于你開發自己的應用程序。要加入這些論壇,你只需按如下步驟操作即可。

(1)訪問p2p.wrox.com并點擊Register鏈接。

(2)閱讀使用條款并點擊Agree按鈕。

(3)填寫加入論壇所必需的信息和你想要提供的其他可選信息,然后點擊Submit按鈕。

(4)你將收到一封電子郵件,該郵件告訴你如何驗證你的賬號并完成加入程序。


注意,不加入P2P論壇也可以閱讀論壇中的消息,但是如果你想要發布自己的消息,你就必須加入論壇。


加入論壇后,你就可以發布新消息并回復其他用戶發布的消息了。你可以在任何時間閱讀Web站點上的消息。如果希望某個論壇能將最新的消息通過電子郵件發送給你,你可以點擊論壇列表中該論壇名稱旁邊的Subscribe to this Forum圖標。

要獲得如何使用Wrox P2P的更多信息,你可以閱讀P2P FAQ列表中的問題及其答復,這些問題與論壇軟件的工作原理及很多與P2P和Wrox圖書相關的常見問題有關。要閱讀FAQ,你可以點擊任何P2P頁面上的FAQ鏈接。

致謝

感謝許多幫助本書出版的人。

Neil要感謝他的妻子Christine,謝謝她的理解,感謝他的孩子Alex和Adrian,沒有抱怨他們的父親只顧在書房中寫作。

Rick要感謝他的妻子Ann以及孩子Jennifer和Andrew,他們非常理解和支持自己的父親在晚上和周末要全神貫注地寫書。

我們要感謝Wiley出版社的工作人員,正是他們的努力使得本書的第4版得以發行。感謝Carol Long啟動了這個項目并整理了合同,感謝Sara Shlaer杰出的編輯工作和Timothy Boronczyk出色的技術審查。我們還要感謝Jenny Watsonfor找出了書中所有的冗余內容,并讓本書順利通過管理層的審核,感謝Bill Barton確保本書完美地組織和呈現,還要感謝文字編輯Kim Cofer。我們還非常感謝Eric Foster-Johnson對本書第16章和第17章所作的出色工作。可以說,如果沒有大家的共同努力,本書不可能做到像現在這么好。

我們還要感謝我們的老板,Scientific Generics、Mobicom和Celesio在本書4個版本的出版過程中給予的支持。

最后,我們要向兩位幫助促成本書出版的重要人士致以崇高的敬意。首先是Richard Stallman,他開發了優秀的GNU工具,提出了自由軟件環境的思想(現在它已通過GNU/Linux成為現實)。第二位是Linus Torvalds,他開展并持續鼓舞著協同開發工作,向我們提供了一個不斷改善的Linux內核。

主站蜘蛛池模板: 松桃| 栾川县| 龙川县| 贺州市| 元阳县| 镇沅| 江孜县| 蒙自县| 剑川县| 广元市| 贵港市| 将乐县| 星座| 广水市| 抚顺市| 金阳县| 苍南县| 万全县| 巴林右旗| 和林格尔县| 贵德县| 凌云县| 介休市| 平顶山市| 承德县| 资兴市| 塔城市| 温州市| 偃师市| 贵港市| 聂拉木县| 微博| 岢岚县| 禹城市| 通榆县| 凤凰县| 花垣县| 登封市| 大埔县| 连城县| 郯城县|