CVS,SVN,Git
Git使用多個分布式存放庫,基於改變集進行曆史跟蹤。
步驟:安裝,建立Git存放庫,向庫中新增內容,操作庫中檔案,合并,其他。
GNU/Linux環境編程一書
Gnuplot古老但流行的可視化程式,可與Ruby,Python,Smalltalk綁定。
pause會把進程掛起,直到接收到訊號。返回繼續運行。
kill向一個或多個進程發送訊號。
raise可以向當前進程發出一個特殊的訊號。
alarm函數在預先設定的時間長度到達後發出一個SIGALRM訊號。
sigaction是signal的改進版,也是POSIX的。
top和ps(-a列出所有)有關,top是即時的。
線程建立,推出,管理(pthread_self取得線程描述項控制代碼),同步(pthread_join讓線程建立者等待這個線程的結束),線程互斥(pthread_mutex)線程條件變數(pthread_cond允許一個線程基於條件喚醒另一個線程)。
構建使用線程的應用程式:
gcc -pthread threadapp.c -o threadapp -lpthread (-pthread選項為程式提供了多線程支援,如重入性等)
使用者空間,處理序間通訊:
訊息佇列,訊號量,共用記憶體等。
進階檔案操作:檔案類型屬性,遍曆,映射,事件,緩衝傳輸。
globRegex。
使用inotify進行檔案系統事件通知。
getopt和getopt_long解析命令列選項
時間換算函數
sysinfo收集系統層次資訊,如負載,儲存容量等。
mmap映射實體記憶體,把檔案內容映射到使用者程式空間。
鎖定解鎖記憶體頁面(用於提高程式效能,使所使用的頁面不被交換出去)
錯誤報表
調試開始時,必須先載入要進行調試的程式,可以用以下兩種方式:
* 在啟動gdb後執行以下命令:
file 可執行檔路徑
* 在gdb啟動時就載入程式:
gdb 可執行檔路徑
list :顯示程式中的代碼
forward/search :從當前行向後尋找匹配某個字串的程式行
reverse-search :和forward/search相反,向前尋找字串
break 要設定斷點的行號
tbreak :設定臨時斷點,在設定之後只起作用一次。
clear :和break相反,clear用於清除斷點。
run :啟動程式,在run後面帶上參數可以傳遞給正在調試的程式
awatch :用來增加一個觀察點(add watch),使用格式:awatch 變數或運算式。當運算式的值發生改變或運算式的值被讀取時,程式就會停止運行。
watch :與awatch類似用來設定觀察點,但程式只有當運算式的值發生改變時才會停止運行。
commands :設定在遇到斷點後執行特定的指令。‘
delete :清除斷點或自動顯示的運算式
disable :讓指定斷點失效。
enable :和disable相反,恢複失效的斷點。
ignore :忽略斷點。
condition :設定斷點在一定條件下才會生效。
cont/continue :使程式在暫停在斷點之後繼續運行。
jump :讓程式跳到指定行開始調試。
next :繼續執行語句,但是跳過子程式的調用。‘
nexti :逐步執行語句,但和next不同的是,它會跟蹤到子程式的內部,但不列印出子程式內部的語句。
step :與next類似,但是它會跟蹤到子程式的內部,而且會顯示子程式內部的執行情況。
whatis :顯示某個變數或運算式的資料類型。
ptype :和whatis類似,用於顯示資料類型,但是它還可以顯示typedef定義的類型等。
set :設定程式中變數的值。set 變數=運算式 set 變數:=運算式
display :增加要顯示值的運算式。info display :顯示當前所有的要顯示值的運算式。
print :列印變數或運算式的值。
backtrace :列印指定個數的棧幀(stack frame)。
frame :列印棧幀。info frame :顯示當前棧幀的詳細資料。
quit :退出gdb。
kill :結束當前程式的調試。
子進程,父進程關係:
子進程在自己的虛擬位址空間中執行,空間包括棧、堆和資料空間 。