精通Unix下C語言編程與項目實踐
之前言
作者:朱雲翔,胡平
當前軟件業開發工具日新月異,從C到C++,從Java到.net,新構架、新組件層出不窮,今天剛學習到的知識,也許明天就已經過時了。要想在激烈的競爭中站穩腳跟,在知識大爆炸中跟上時代的步伐,軟件開發者一般會有兩種應對方式:
1. 瘋狂的學習,每天惡補新知識以適應知識發展的需要。
2. 打牢基礎,選擇一個相對穩定的平台和相對穩定的開發語言,以不變應萬變。
在Unix下C語言編程是一種相對穩定的開發平台下的開發語言,掌握了它,就可以輕松完成當前Unix服務器下瘋狂增長的各式各樣的功能需求。
為什麼選擇Unix編程
在工業領域,Unix的應用范圍非常廣泛,采用Unix系統的服務器性能更穩定,資源利用率更高,更易於維護。選擇Unix編程的理由如下:
1. Unix是現今大中型企業級應用的最佳支持方案
當前,銀行、電信、證券等大型數據庫需求商無一例外的選擇了Unix操作系統。固然這裡存在設備的原因這些企業選擇的大、中、小型機一般只支持廠家配套的Unix操作系統),但另一方面也與Unix超強性能分不開。
Unix操作系統具有安全、穩定和多用戶等多方面的特點,可以充分發揮設備的性能,尤其適用對系統性能、文件I/O吞吐量、並發能力、安全認證、網絡吞吐和交易時間等有著極高要求的大型網絡服務器和數據庫服務器。諸如現今流行的網絡游戲,其後台服務器的支持也首選Unix操作系統。
2. Linux為小型企業級應用提供了優質性價比的支持方案
Linux的出現為X86型主機運行Unix成為了可能,也為小型企業提供優質的應用支持方案。運行Linux或其它支持X86的Unix)的服務器,也被廣泛的應用於網站、中小型網絡游戲和其它應用系統中。
3. Unix的分時多用戶功能極大地方便了主機共享和遠程維護
與Windows的獨占性操作系統不同,Unix是分時多用戶系統,它允許多人同時登陸主機。共享主機的不同用戶之間相互並發,互不影響,就像每個用戶都在使用自己單獨的主機一樣。
Unix的網絡終端遠程登陸功能為零距離維護提供了可能,維護人員無論何時何地,只要有網絡,就可以憑借Unix對TELNET協議或SSH協議的支持,以極少的系統資源消耗登陸主機,真正做到了運籌帷幄之中,決勝千裡之外。
Unix編程的內容
Unix下C語言編程的基本思想與普通C語言編程無異,只是加入了大量的系統調用和特殊應用處理,其主要內容如下:
1. 文件I/O系統調用
包括Unix文件系統基礎知識、標准I/O編程庫、Unix文件系統調用庫等。
2. 時間與信號系統調用
包括時間獲取與設置、定時器的使用、信號系統的調用等。
3. 進程與線程系統調用
包括進程與線程的系統控制與生命周期,利用進程或線程設計並發程序的方法等。
4. 進程間通訊系統調用
包括管道和IPC消息隊列、信號量和共享內容等)的系統調用等。
5. SOCKET通訊應用
包括SOCKET通訊的各種模式和SOCKET與多進程、多線程的聯合並發程序設計的方法等。
6. Curses字符界面應用
包括利用Curses函數庫操作網絡終端和物理終端的方法,以及Curses庫與SOCKET的聯合程序設計的方法等。
7. 數據庫編程應用
包括利用數據庫提供的API函數和嵌入式SQL直接操作數據庫的方法等。
怎樣學習Unix編程
編程是一門細致的工作,對於Unix下C語言編程來說更是如此。無論讀者是因為興趣愛好選擇Unix編程,還是由於工作壓力被迫選擇Unix編程,耐心和細致都是必不可少的;另外熟能生巧是學習知識永遠的捷徑:
1. 勤操作,熟練Unix應用
很多第一次接觸Unix的讀者在編程時,常常有種無從下手的感覺,不是看不懂程序,或者不會編程序,而是不知道該如何進入Unix系統,不知道該如何編輯程序,也不知道該如何編譯程序。的確,Unix編程初學者的瓶頸常常不是程序本身,而是諸如安裝機器、安裝系統軟件和shell操作等一系列表面上與編程毫不相關的事務。所以熟練使用Unix的各種操作,可以大大提高Unix的編程效率。
事實上,Unix編程與Unix操作息息相關,初學者可以通過安裝操作系統、安裝數據庫軟件、安裝文件系統、IPC控制、啟停應用軟件等各種操作增加自己的對Unix編程的理解。
Unix的基本操作見本書第$1.2小節,或者請查閱相關書籍。
實踐經驗】只有真正熟練應用Unix操作系統的開發者才可以真正的理解Unix編程。
2. 勤編程,提高動手能力
眼高手低是人們學習時的特點之一,很多讀者可能會遇上這樣的疑惑:為什麼書上的程序我都看得懂,可實際編程時就是不能靈活應用呢?其實這是一個熟練的過程,將書中的實例運行幾次,把書後的習題解答幾次,也許你會發現成功駕馭Unix編程不再是虛無飄渺的夢。數學家華羅庚曾經說的“苦戰猛攻埋頭干,熟練生出百巧來”就是這個道理。
本書的讀者可以從以下幾個方面實踐:
(1) 學習書中實例,並且編譯和執行之。
(2) 理解實例,舉一反三,,並聯系實踐,思考實例在實踐生產中的應用。
(3) 按部就班完成附錄C中的《精通Unix下C語言編程100例》的代碼。
實際經驗】雖然隨書代碼中會附帶本書全部實例的源代碼,但請讀者務手工輸入、編譯並且執行全部程序。因為:
· 輸入代碼過程將加深記憶和理解。
· 手工輸入過程中肯定會產生一些筆誤,導致程序不能編譯通過,或者不能正常運行;而對程序調試的過程其實就是一種最好的實踐。
· 親自輸入代碼並且測試通過,會產生一種成就感,極大地提高學習興趣。
3. 多思考,舉一反三掌握知識
在實際應用中,存在多種多樣的情況,不是書中的實例可以窮盡的。因此讀者在學習完一個實例後,可以根據所在企業的實際情況,編寫出具有企業特色的實例來,即學習了Unix編程,又提前為實踐生產做了准備。
總之,學習Unix編程最重實踐,讀者請務必親自調試書中實例,完成書後習題,只有這樣才能盡快到達“眾裡尋他千百度,暮然回首,那人卻在燈火闌柵處”的境界。
相關文章:
封面 前言 目錄 策劃 作者
動態庫 變長參數 文件鎖本文出自 “編程浪子朱雲翔” 博客,請務必保留此出處http://zhuyunxiang.blog.51cto.com/653596/128312