《Linux程式設計》第4版 核心筆記
讀本書的學習目標:
1. 掌握標準linux C語言函式庫和箇中linux或unix標準指定的其他工具的使用方法
2. 掌握如何使用大多數標準linux開發工具
3. 學會通過DBM和MySQL資料庫系統儲存Linux中的資料
4. 理解如何為X視窗系統建立圖形使用者介面,同時使用GTK和Qt函式庫
5. 擁有開發自己的實際應用程式的信心和能力
一個貫穿全書的大型示例專案:
一個簡單的用於記錄音樂CD詳細資料的資料庫應用程式。
檔案操作、從linux環境中獲取資訊、處理終端的輸入輸出、curses函式庫
GTK+工具包:是GNOME開發環境的基礎;
Qt工具包:是KDE開發環境的基礎。
本書所有原始碼下載地址:
【第一章:入門】
Linux:GNU/Linux
GNU專案自由軟體官網:http://www.gnu.org
linux實際是一個核心,在核心上安裝許多自由釋出的軟體,從而完成一個linux系統。
linux程式設計,就是C語言程式設計。
linux程式包含兩種特殊型別的檔案:可執行檔案、指令碼檔案。
系統級的應用程式,可以放在目錄:/usr/local/ 目錄中來執行和訪問所需的檔案。
對於開發用和個人的應用程式,最好在家目錄中使用一個資料夾來存放它。
系統提供的標頭檔案都位於:/usr/include/ 目錄下。
$:' grep EXIT_ /usr/include/*.h
//在/usr/include/目錄下所有以.h結尾的檔案中搜索字串EXIT_
庫,是一組預先編譯好的函式的集合,這些函式都是按照可重用的原則編寫的。
標準系統庫檔案存放於:/lib/ 或 /usr/lib/ 下。
靜態庫:一組處於“準備好使用”狀態的目標檔案。必須使用 -l 選項指明除標準C語言執行庫以外還需要使用的庫。
靜態庫,也稱作歸檔檔案,檔名都以 .a 結尾。
靜態庫製作:
$:' gcc -c *.c
// 建立目標模組.o檔案
$:' ar -crv *.o libfoo.a
// 建立foo靜態庫檔案libfoo.a
$:' ranlib libfoo.a
// linux下ranlib不是必須操作,做了也無妨。(是為衍生的unix系統生成內容表)
$:' gcc -o program program.o -L. -lfoo
// -L選項告訴編譯器庫檔案的位置;-l選項告訴編譯器是哪個靜態庫
共享庫即動態庫,程式本身不包含函式程式碼,引用執行時才訪問共享程式碼的庫檔案。
$:' ldd program
// ldd命令檢視程式鎖需要的共享庫檔案
man命令,用來訪問線上手冊頁。
$:' man gcc
// space空格鍵讀下一頁,enter回車鍵讀下一行,q鍵退出。
// f鍵下一屏,b鍵上一屏。
info命令,在GNU軟體和其他一些自由軟體中的線上文件系統。通過連結和交叉引用來瀏覽文件並可以直接跳轉相關的章節。
$:' info gcc
// Ctrl+H可以看到info的操作指南
【第二章:shell程式設計】
shell執行shell程式,這些程式通常稱為 指令碼 ,執行時是解釋執行的。
$:' ls -al | more
// ls和more命令,通過管道實現了檔案列表的分屏顯示。
$:' man bash | col -b | lpr
// bash資訊進行顯示和列印
重定向輸出:
$:' ls -l > lsoutput.txt
// 把ls命令的輸出結果儲存到檔案lsoutput.txt中
$:' ps >> lsoutput.txt
// 把ps命令的輸出結果附加到檔案lsoutput.txt中
$:' kill -l 1234 >killouterr.txt 2>&1
// 將標準輸出重定向到檔案killouterr.txt中,然後講標準錯誤輸出重定向到與標準輸出相同的地方
重定向輸入:
$:' more < killouterr.txt
// linux下重定向輸入的話意義不大
管道:
$:' ps -xo comm | sort | uniq | grep -v sh | more
// 首先按字母順序排序ps命令的輸出,再用uniq命令去除名字相同的程序,然後用grep -v sh命令刪除名為sh的程序,最終將結果分頁顯示在螢幕上
shell的語法:
變數:=賦值,兩邊不能有空格
// 使用read命令將使用者輸入的值賦值給一個變數
環境變數:$HOME $PATH $PS1 $PS2 $IFS $0 $# $$
引數變數:$1,$2,... $* [email protected]
條件:test 或 [ ]
控制結構:
if語句
if [ condition ]
then
statements
else
statements
fi
elif語句(else if)
/* if指令碼例子 */
#!/bin/sh
echo "Is it morning? Please answer yes or no"
read timeofday
if [ $timeofday = "yes" ]; then
echo "Good morning"
else
echo "Good afternoon"
fi
exit 0
/* ----------- */
echo -e 可以實現每一行後面的換行符。
for語句
for variable in values
do
statesments
done
/* for指令碼例子 */
#!/bin/sh
for file in $(ls *); do
echo $file
done
exit 0
/* ----------- */
while語句
while condition do
statesments
done
/* while指令碼例子 */
#!/bin/sh
echo "Enter passwd"
read trythis
while [ "$trythis" != "secret" ]; do
echo "Sorry, try again..."
read trythis
done
echo "success..."
exit 0
/* ----------- */
...更多內容詳見
《linux程式設計》第4版.pdf相關推薦
《Linux程式設計》第4版 核心筆記
【前言】 讀本書的學習目標: 1. 掌握標準linux C語言函式庫和箇中linux或unix標準指定的其他工具的使用方法 2. 掌握如何使用大多數標準linux開發工具 3. 學會通過DBM和MySQL資料庫系統儲存Linux中的資料 4. 理解如何為X視窗系統建立圖形使
Python程式設計(第4版 套裝上下冊) pdf 下載
本書是Python應用的手冊指南,它涵蓋了Python程式設計的方方面面,從系統管理到圖形介面程式設計,從文字處理到網路程式設計,從資料庫到語言擴充套件……這些主題的探討中,作者提供了大量的實際程式碼,通過對這些程式碼的研讀,對讀者的Python程式設計水平以及實際業務問題的解決都將不無裨益
JavaScript高階程式設計第三版學習筆記(一)之資料型別區分詳談
null、NaN、undefined三者的區別是什麼? 在初次接觸到JavaScript的時候,傻傻的分不清null、NaN、undefined三者到底區別何在,在實際的專案開發中也因為這個問題而困惑久矣。針對這個問題,我特意查找了多方資料,在筆記本上做了詳細的分析記錄,但是由於紙質資料不便於攜帶、
《Lua程式設計(第4版)》:第6章練習答案
練習6-1 function exercise6_1(array) for i=1,#array,1 do io.write(table.unpack(array,i,i)," ") end end 練習6-2 function exercise6_2(
《Javascript 高階程式設計(第三版)》筆記0x8 OOP 理解物件
ECMA-262 把物件定義為:“無序屬性的集合,其屬性可以包含基本值、物件或者函式。”嚴格來講,這就相當於說物件是一組沒有特定順序的值。物件的每個屬性或方法都有一個名字,而每個名字都對映到一個值。
《Lua程式設計(第4版)》:第5章練習答案
練習5.1 monday sunday sunday 練習5.2 一樣,都指向該表。 a.a.a.a=3,執行的是該表的索引 a 賦值為3,之後的a.a.a.a將會引發異常,因現a.a=3,而非
《Javascript 高階程式設計(第三版)》筆記0x9 OOP 建立物件
目錄 建立物件 工廠模式 建構函式模式 將建構函式當作函式 建構函式的問題  
《Javascript 高階程式設計(第三版)》筆記0xC BOM window 物件
目錄 window 物件 全域性作用域 視窗關係及框架 top parent
《Javascript 高階程式設計(第三版)》筆記0xB 函式表示式
目錄 遞迴 閉包 閉包與變數 關於this物件 記憶體洩漏 模仿塊級作用域 私有變數 特權方法(privil
《Javascript 高階程式設計(第三版)》筆記0xA OOP 繼承
目錄 原型鏈 別忘記預設的原型 確定原型和例項的關係 instanceof 操作符 isPrototype
《Javascript 高階程式設計(第三版)》筆記0x7 引用型別(2)
目錄 Function 型別 沒有過載 函式宣告與函式表示式 作為值的函式 將一個函式作為另一個函
《Javascript 高階程式設計(第三版)》筆記0x6 引用型別(1)
目錄 Object型別 Array 型別 檢測陣列 轉換方法 toString(),valueOf() &
《Javascript 高階程式設計(第三版)》筆記0x5 變數|作用域|記憶體
目錄 基本型別和引用型別的值 動態的屬性 複製變數值 傳遞引數 檢測型別 執行環境及作用域 &
《Javascript 高階程式設計(第三版)》筆記0x4 JavaScript基本概念(3)
目錄 語句 if語句 do-while語句 while語句 for語句 for-in語句 label語句 break和continue語句 &n
《Javascript 高階程式設計(第三版)》筆記0x3 JavaScript基本概念(2)
目錄 操作符 一元操作符 位操作符 布林操作符 乘性操作符 加性操作符 關係操作符
《Javascript 高階程式設計(第三版)》筆記0x2 JavaScript基本概念(1)
目錄 語法 變數 資料型別 typeof: Undefined型別 Null型別 Boolean型別 Numbe
《Javascript 高階程式設計(第三版)》筆記0x1 JavaScript簡介
誕生 受網速限制,急需一種機制可以在客戶端完成輸入驗證。 Netscape:LiveScript-->JavaScript
《Javascript 高階程式設計(第三版)》筆記0xD BOM location、navigator、screen、history
目錄 location 物件 查詢字串引數 位置操作 replace() &
《Javascript 高階程式設計(第三版)》筆記0x11 DOM操作技術
動態指令碼 <script type="text/javascript" src="client.js"></script> function loadScript(url){ var script = document.createElement("scri
《Javascript 高階程式設計(第三版)》筆記0x10 節點:Element、Text、Comment等
目錄 Element型別 HTML 元素 取得特性 設定特性 attributes 屬性