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選項爲程序提供了多線程支持,如重入性等)
用戶空間,進程間通信:
消息隊列,信號量,共享內存等。
高級文件操作:文件類型屬性,遍歷,映射,事件,緩衝傳輸。
glob正則表達式。
使用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 :結束當前程序的調試。
子進程,父進程關係:
子進程在自己的虛擬地址空間中執行,空間包括棧、堆和數據空間 。