原创 UNIX高級編程總結-----文件I/O (一)

一、文件描述符         1、對於內核而言,所有打開的文件都通過文件描述符來表示。文件描述符是一個非負整數,當打開或者創建一個文件時,內核會向進程返回一個文件描述符。當對文件進行操作時,會使用到文件描述符。UNIX系統shell把0

原创 UNIX高級編程總結-----標準I/O庫 (三)

九、實現細節

原创 linux Shell的重定向

在網上搜索一圈,清楚明瞭的解釋還是 http://www.runoob.com/linux/linux-shell-io-redirections.html 結合理論,整理例子如下: 1、command > file   (  >> 

原创 UNIX高級編程總結-----標準I/O庫 (一)

一、流 和 FILE對象         之前在文件I/O中提到的函數,都是圍繞文件描述符的,當打開一個文件時,返回的是一個文件描述符,然後對該文件描述符進行後續的I/O操作。而對於標準I/O庫,他們的操作是圍繞着 流 進行的。當用標準I

原创 C語言常見的小算法 一(斐波那契數列、迴文、質數檢查、金字塔)

1、斐波那契數列 -----1   1   2   3   5   8  13 用常見的兩種方式實現(非遞歸 和 遞歸): #include<stdio.h> /*遞歸實現*/ int Fibonacci_recursion(int n

原创 C語言關鍵字 restrict

概念:   restrict,C語言中的一種類型限定符(Type Qualifiers),用於告訴編譯器,對象已經被指針所引用,不能通過除該指針外所有其他直接或間接的方式修改該對象的內容。 淵源:   restrict是c99標準引入的,

原创 linux高級IO-----readv、writev 以及 struct iovec

        readv和writev函數用於在一次函數調用中讀、寫多個非連續緩衝區。有時也將這兩個函數稱爲散佈讀(scatter read)和聚集寫(gather write)。 #include<sys/uio.h> struct

原创 監視哨兵能讓順序查找時間減半! 真的嗎?

在嚴奶奶版的《數據結構》一書中, 嚴奶奶引用了別的書的觀點: 在順序查找時(設表長>=1000), 引入監視哨兵, 可以減少幾乎一半的查詢時間。        理論上,引入監視哨兵, 的確可以優化時間。來測試一下, 看看引入監視哨兵的前後

原创 跟我一起寫 Makefile(七 函數)陳皓

使用函數 ———— 在Makefile中可以使用函數來處理變量,從而讓我們的命令或是規則更爲的靈活和具有智能。make所支持的函數也不算很多,不過已經足夠我們的操作了。函數調用後,函數的返回值可以當做變量來使用。 一、函數的調用語法 函數

原创 跟我一起寫 Makefile (五 變量)陳皓

       在Makefile中的定義的變量,就像是C/C++語言中的宏一樣,他代表了一個文本字串,在Makefile中執行的時候其會自動原模原樣地展開在所使用的地方。其與C/C++所不同的是,你可以在Makefile中改變其值。在Ma

原创 跟我一起寫 Makefile (六 條件判斷)陳皓

使用條件判斷 ——————        使用條件判斷,可以讓make根據運行時的不同情況選擇不同的執行分支。條件表達式可以是比較變量的值,或是比較變量和常量的值。 一、示例 下面的例子,判斷$(CC)變量是否“gcc”,如果是的話,則使

原创 跟我一起寫 Makefile (六)陳皓

一、顯示命令 通常,make會把其要執行的命令行在命令執行前輸出到屏幕上。當我們用“@”字符在命令行前,那麼,這個命令將不被make顯示出來,最具代表性的例子是,我們用這個功能來像屏幕顯示一些信息。如:     @echo 正在編譯XXX

原创 跟我一起寫 Makefile (五)陳皓

六、多目標 Makefile的規則中的目標可以不止一個,其支持多目標,有可能我們的多個目標同時依賴於一個文件,並且其生成的命令大體類似。於是我們就能把其合併起來。當然,多個目標的生成規則的執行命令是同一個,這可能會可我們帶來麻煩,不過好在

原创 跟我一起寫 Makefile (四)陳皓

書寫規則 ———— 規則包含兩個部分,一個是依賴關係,一個是生成目標的方法。 在Makefile中,規則的順序是很重要的,因爲,Makefile中只應該有一個最終目標,其它的目標都是被這個目標所連帶出來的,所以一定要讓make知道你的最終

原创 跟我一起寫 Makefile (一)陳皓

概述 —— 什麼是makefile?或許很多Winodws的程序員都不知道這個東西,因爲那些Windows的IDE都爲你做了這個工作,但我覺得要作一個好的和professional的程序員,makefile還是要懂。這就好像現在有這麼多的