這段時間學習了unix環境高階程式設計,在這裡呢,先給大家推薦一本書——《unix環境高階程式設計》,這本書在這個領域可是聖經級別的。
先說一下這段時間的學習感受,起初學習了幾天之後,休息了一段時間,於是自己照著那本聖經開始看了起來,有很多難懂的地方,看著看著,難免心態有點崩潰,但是還是咬著牙看了下去,雖然有很多不懂得地方,但是支撐我看下去的動力是:偶爾會有這樣一種感覺,之前剛開始學習c語言的一些疑惑,好像漸漸被解釋清楚了,所以就有了繼續看下去的動力。怎麼說呢,學習知識就是像是乙個用容器裝水的過程,起初,容器很小,能裝的水就比較少,隨著自己能力的提公升,容器也就慢慢變大了,那麼這時,你就能夠裝下更多的水,並且融會貫通。正如作者所說的那樣,對於作業系統,想要簡單的說清楚,並且理解,那是幾乎不可能的事情,我也是這樣想的,如果乙個很複雜,很龐大的知識體系那麼容易掌握,那就沒什麼困難的了。這就更加激起了我繼續去學習的興趣。總之剛開始是有點不知所措的,甚至懷疑自己,慢慢學下去之後就改掉了之前的心浮氣躁。
接下來進入正題,對於環境程式設計,我們要學習很多的函式,那本聖經也是很恐怖的,有個附錄,後面不多說,好幾百是有的,而且,每個函式的功能及引數都很強大(所謂強大,那麼必然複雜,甚至說很難理解和掌握),其實擺正心態,並不是為了要記住它們,而是為了理解作業系統的內部到底是什麼樣的,我們在寫每一句簡單的**語句時,作業系統都幹了些什麼,也就是學習我們程式設計的底層是乙個什麼樣的結構。舉乙個簡單的例子,我們用c語言時經常使用malloc函式申請記憶體,那麼我們在呼叫了這個函式後,計算機到底怎麼來分配記憶體的,或者說怎麼工作的。其實呢,應用程式和核心之間隔著層系統呼叫,我們可以把系統呼叫理解為是核心提供給應用程式的一給介面。在應用程式和系統呼叫之間還有一層shell和共用函式庫,shell是乙個特殊的應用程式,也是為其他執行的應用程式提供了乙個介面,這是我們unix作業系統的體系結構。
其實,有人說學習這些有什麼用呢,是的,這個懷疑不無道理,對我們寫程式,可能確實沒什麼用,但是在有些時候,知其然更要知其所以然,不能傻乎乎的寫了半天,還不知道在幹嘛。所以還是很有必要學習的。
之後,我們依次學習了檔案的操作(這裡是系統呼叫的函式,也就是說,標準c語言的檔案讀寫在內部其實呼叫了這些函式),程序環境(程序建立,程序管理,程序通訊),訊號,執行緒(執行緒建立,執行緒同步,執行緒終止),網路通訊。說起來這些內容,真的很多,短短的時間確實很難掌握的深刻,但是,通過這個內容的學習,以及中間穿插的各種專案,用一句搞笑的話來說,確實讓我功力大增,可能距離乙個程式設計師還挺遠,不過,我相信會慢慢變得更好。
現在來說,對於unix的環境程式設計雖然告一段落,但是接下來會反覆鞏固,並且加深自己的理解。
總之,想要構建自己的知識體系,那必須要沉住氣,慢慢堅持下去,如果,急迫起來,指揮適得其反。
這段時間學習了unix環境高階程式設計,在這裡呢,先給大家推薦一本書——《unix環境高階程式設計》,這本書在這個領域可是聖經級別的。
先說一下這段時間的學習感受,起初學習了幾天之後,休息了一段時間,於是自己照著那本聖經開始看了起來,有很多難懂的地方,看著看著,難免心態有點崩潰,但是還是咬著牙看了下去,雖然有很多不懂得地方,但是支撐我看下去的動力是:偶爾會有這樣一種感覺,之前剛開始學習c語言的一些疑惑,好像漸漸被解釋清楚了,所以就有了繼續看下去的動力。怎麼說呢,學習知識就是像是乙個用容器裝水的過程,起初,容器很小,能裝的水就比較少,隨著自己能力的提公升,容器也就慢慢變大了,那麼這時,你就能夠裝下更多的水,並且融會貫通。正如作者所說的那樣,對於作業系統,想要簡單的說清楚,並且理解,那是幾乎不可能的事情,我也是這樣想的,如果乙個很複雜,很龐大的知識體系那麼容易掌握,那就沒什麼困難的了。這就更加激起了我繼續去學習的興趣。總之剛開始是有點不知所措的,甚至懷疑自己,慢慢學下去之後就改掉了之前的心浮氣躁。
接下來進入正題,對於環境程式設計,我們要學習很多的函式,那本聖經也是很恐怖的,有個附錄,後面不多說,好幾百是有的,而且,每個函式的功能及引數都很強大(所謂強大,那麼必然複雜,甚至說很難理解和掌握),其實擺正心態,並不是為了要記住它們,而是為了理解作業系統的內部到底是什麼樣的,我們在寫每一句簡單的**語句時,作業系統都幹了些什麼,也就是學習我們程式設計的底層是乙個什麼樣的結構。舉乙個簡單的例子,我們用c語言時經常使用malloc函式申請記憶體,那麼我們在呼叫了這個函式後,計算機到底怎麼來分配記憶體的,或者說怎麼工作的。其實呢,應用程式和核心之間隔著層系統呼叫,我們可以把系統呼叫理解為是核心提供給應用程式的一給介面。在應用程式和系統呼叫之間還有一層shell和共用函式庫,shell是乙個特殊的應用程式,也是為其他執行的應用程式提供了乙個介面,這是我們unix作業系統的體系結構。
其實,有人說學習這些有什麼用呢,是的,這個懷疑不無道理,對我們寫程式,可能確實沒什麼用,但是在有些時候,知其然更要知其所以然,不能傻乎乎的寫了半天,還不知道在幹嘛。所以還是很有必要學習的。
之後,我們依次學習了檔案的操作(這裡是系統呼叫的函式,也就是說,標準c語言的檔案讀寫在內部其實呼叫了這些函式),程序環境(程序建立,程序管理,程序通訊),訊號,執行緒(執行緒建立,執行緒同步,執行緒終止),網路通訊。說起來這些內容,真的很多,短短的時間確實很難掌握的深刻,但是,通過這個內容的學習,以及中間穿插的各種專案,用一句搞笑的話來說,確實讓我功力大增,可能距離乙個程式設計師還挺遠,不過,我相信會慢慢變得更好。
現在來說,對於unix的環境程式設計雖然告一段落,但是接下來會反覆鞏固,並且加深自己的理解。
總之,想要構建自己的知識體系,那必須要沉住氣,慢慢堅持下去,如果,急迫起來,指揮適得其反。
UNIX LINUX程式設計書籍
排名不分先後 1.c語言 高質量程式設計指南 c語言介面與實現 c語言解惑 c專家程式設計 c陷阱與缺陷 c語言參考手冊 2.linux應用開發 unix網路程式設計 第1,2卷 unix環境高階程式設計 linux系統程式設計 unix linux程式設計實踐教程 linux程式設計 第3版 un...
Unix Linux程式設計 socketpair
管道內部傳輸的是位元組流,tcp socket傳輸的也是位元組流,區別在於 socket的基礎api中有乙個socketpair函式。它能夠方便的建立雙向管道 include include socketpair 函式用於建立一對無名的 相互連線的套接子。引數 domain必須是unix本地域協議族...
UNIX LINUX程式設計學習之程序通訊 共享記憶體
共享記憶體 shared memory 共享記憶體,簡單的說就是被多個程序共享的記憶體。它在各種程序通訊方法中是最快的,因為它是將資訊直接對映到記憶體中,省去了其它 ipc方法的中間步驟。1.shmid ds 共享記憶體也有乙個給系統記憶體用來儲存相關資訊的機構,就是shmid ds。c struc...