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

前言

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

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

讀者對象

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

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

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

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

主要內(nèi)容

本書希望讓你達(dá)到以下幾個學(xué)習(xí)目標(biāo)。

? 掌握標(biāo)準(zhǔn)Linux C語言函數(shù)庫和由各種Linux或UNIX標(biāo)準(zhǔn)指定的其他工具的使用方法。

? 掌握如何使用大多數(shù)標(biāo)準(zhǔn)Linux開發(fā)工具。

? 學(xué)會通過DBM和MySQL數(shù)據(jù)庫系統(tǒng)存儲Linux中的數(shù)據(jù)。

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

? 擁有開發(fā)自己的實際應(yīng)用程序的信心和能力。

在討論這些主題時,我們首先介紹編程理論,然后通過適當(dāng)?shù)睦雍颓逦慕忉寔黻U明它。通過這種方式,你可以在第一遍的學(xué)習(xí)中就能夠迅速掌握相關(guān)知識。如有必要,你還可以回顧這些內(nèi)容以重溫所有的基本要素。

書中小示例程序主要是為了演示一組函數(shù)的用法或某些新概念的實際使用情況。貫穿全書有一個大型的示例項目:一個簡單的用于記錄音樂CD詳細(xì)資料的數(shù)據(jù)庫應(yīng)用程序。隨著知識面的擴(kuò)展,你可以按照自己的意愿開發(fā)、重新實現(xiàn)和擴(kuò)展這個項目。雖然如此,這個CD應(yīng)用程序?qū)Ρ緯娜魏我徽聛碚f都不是必需的,所以只要你愿意也可以忽略它,但我們認(rèn)為它對書中討論的技術(shù)提供了一些有用的和深入的示范,并且它還有助于講解每個高級主題。我們對這個應(yīng)用程序的第一次討論出現(xiàn)在本書第2章的結(jié)尾處,它顯示了一個非常大的shell腳本是如何組織的,shell如何處理用戶輸入、如何構(gòu)造菜單以及如何存儲和檢索數(shù)據(jù)。

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

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

接下來,你將看到不同的Linux進(jìn)程是如何使用各種技術(shù)進(jìn)行通信的,以及Linux程序是如何使用套接字來支持不同機器之間的TCP/IP網(wǎng)絡(luò)通信的,包括與使用不同處理器架構(gòu)的機器之間通信的問題。

在掌握了Linux程序設(shè)計的基礎(chǔ)之后,我們開始討論圖形化程序的創(chuàng)建方法。我們將通過兩章的篇幅來介紹相關(guān)內(nèi)容。首先介紹GTK+工具包,它是GNOME開發(fā)環(huán)境的基礎(chǔ);然后介紹Qt工具包,它是KDE開發(fā)環(huán)境的基礎(chǔ)。

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

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

準(zhǔn)備工作

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

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

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

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

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

源代碼

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


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


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

代碼下載說明

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

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

GNU通用公共許可證

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

排版約定

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

書中像這樣的文字框中記錄的是一些重要的、不應(yīng)該被忘記的、非常關(guān)鍵的信息。它們與周邊的內(nèi)容直接相關(guān)。

對當(dāng)前討論內(nèi)容的技巧、提示、竅門和旁白都會像這樣縮進(jìn)放置并將字體設(shè)置為楷體。

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

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

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

Linux定義的函數(shù)和結(jié)構(gòu)的原型使用黑體字來印刷,如下所示:

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

而如果代碼采用的是如下所示不帶底紋的風(fēng)格,就表示它的內(nèi)容沒有那么重要:

當(dāng)程序代碼的內(nèi)容在一章中有增加時,后來添加的代碼首次出現(xiàn)時以加底紋的風(fēng)格給出,其后就不再加底紋了。例如,一個新的程序如下所示:

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

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

勘誤表

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

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

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

p2p.wrox.com

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

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

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

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

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

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


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


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

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

致謝

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

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

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

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

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

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

數(shù)字版權(quán)聲明

圖靈社區(qū)的電子書沒有采用專有客戶端,您可以在任意設(shè)備上,用自己喜歡的瀏覽器和PDF閱讀器進(jìn)行閱讀。

但您購買的電子書僅供您個人使用,未經(jīng)授權(quán),不得進(jìn)行傳播。

我們愿意相信讀者具有這樣的良知和覺悟,與我們共同保護(hù)知識產(chǎn)權(quán)。

如果購買者有侵權(quán)行為,我們可能對該用戶實施包括但不限于關(guān)閉該帳號等維權(quán)措施,并可能追究法律責(zé)任。

作者簡介

陳健

畢業(yè)于南京大學(xué),1996年獲電子學(xué)學(xué)士,2002年獲計算機碩士,現(xiàn)工作于南京大學(xué)網(wǎng)絡(luò)信息中心。長期從事軟件研發(fā)和教學(xué)工作,主要研究方向為網(wǎng)絡(luò)管理。

宋健建

畢業(yè)于南京大學(xué)計算機系,分別于1997年和2003年獲學(xué)士、碩士學(xué)位,從事軟件開發(fā)多年,現(xiàn)任教于南京大學(xué)軟件學(xué)院,主要研究方向為Linux和嵌入式系統(tǒng)軟件。

版權(quán)聲明

Original edition, entitled Beginning Linux Programming, 4th Edition, by Neil Matthew, Richard Stones, ISBN 9780470147627, published by John Wiley & Sons, Inc.

Copyright ?2008 by John Wiley & Sons, Inc., All rights reserved.This translation published under License.

Translation edition published by POSTS & TELECOM PRESS Copyright ?2010.

Copies of this book sold without a Wiley sticker on the cover are unauthorized and illegal.

本書簡體中文版由John Wiley & Sons, Inc.授權(quán)人民郵電出社獨家出版。

本書封底貼有Wiley & Sons, Inc.激光防偽標(biāo)簽,無標(biāo)簽者不得銷售。

所有的計算機程序員都會隨手記下大量筆記,其中的代碼示例往往來自前人對使用手冊的深入鉆研,或者來自Usenet新聞組,來自后者的代碼有時連最盲目的探索者也不敢照搬照抄(當(dāng)然也有另一種觀點認(rèn)為,他們都可以自由地訪問Usenet新聞組,并且從來沒有停止過對其中代碼的使用),但采用這種風(fēng)格的圖書可以說少之又少,這不能不說是一件很奇怪的事情。在因特網(wǎng)中,存在著大量針對程序設(shè)計和系統(tǒng)管理特定領(lǐng)域的、短小精悍而又切中問題關(guān)鍵的文檔。Linux文檔項目發(fā)表了一系列的文檔,內(nèi)容涵蓋了Linux的各個方面,從在同一臺機器上同時安裝Linux和Windows到將你的咖啡機連接到Linux系統(tǒng)。你可以通過網(wǎng)址http://www.tldp.org來查看Linux文檔項目。

從另一方面來看,現(xiàn)在的圖書市場充斥著大量這樣的圖書,它們要么是大部頭的巨著,內(nèi)容詳盡而全面,使得你沒有時間把它們讀完;要么就是完全面向初學(xué)者的入門圖書,你購買它們只是為了送給朋友(開個玩笑而已)。只有很少的書籍嘗試著對大量實際應(yīng)用領(lǐng)域的基本概念和做法進(jìn)行介紹。本書就是其中之一,它是對程序員筆記的摘要,經(jīng)過破譯(要認(rèn)清程序員的筆跡可并非易事)和編輯,并將它們有機地組織起來。

本書這一版經(jīng)過了審閱和更新,反映了目前Linux開發(fā)的現(xiàn)狀。

Alan Cox

Linux內(nèi)核維護(hù)者

主站蜘蛛池模板: 建瓯市| 茶陵县| 绥棱县| 喀喇沁旗| 河池市| 都兰县| 仁寿县| 河池市| 大洼县| 新津县| 武山县| 乌拉特后旗| 日喀则市| 社会| 安泽县| 刚察县| 伽师县| 沧州市| 铁力市| 大名县| 丽江市| 盐山县| 黄陵县| 万盛区| 惠安县| 潜山县| 辽阳市| 晴隆县| 玉树县| 莱州市| 曲沃县| 德安县| 思茅市| 高雄县| 江阴市| 南岸区| 三原县| 西平县| 米脂县| 新闻| 井陉县|