原创 系統調用和系統庫函數的一些基礎知識

文件 linux中文件具有特殊意義,它們爲操作系統服務和設備提供了一個簡單統一的接口,在linux中,幾乎一切都是文件. 我們可以像使用文件那樣使用磁盤,串行口,打印機和其他設備,大多情況下,只需要五個基本系統調用函數便可操作這些硬件:o

原创 rsync算法及其優化算法

rsync算法要解決的問題很簡單:A和B兩個文件在兩臺服務器中,要將A同步到與B一致,要求儘量減少同步帶來的網絡傳輸開銷。rsync基本算法 先說基

原创 靜態庫和共享庫的基礎知識

庫是一組預先編譯好的函數集合,這些函數需要按照可重用的原則編寫,這些函數通常是有關聯並執行同一項任務,比如屏幕處理函數庫curses和nsurses庫. 標準系統庫在/lib和/usr/lib中,編譯器會自動找到.除此之外的庫在使用時需要

原创 排序------------------分治策略與組合法

  1.分治法 插入排序使用增量法:在排好的A[1],A[2],...,A[j - 1]子數組後(A[1]爲第一個元素),將A[j]插入,形成排好的

原创 排序----堆排序

插入、合併、堆、快速排序通過對數組中的元素進行比較來實現,對任何n個輸入來說,最壞運行時間下界爲Ω(n*lgn)。 注:lgn是log2(n) A是一個任意數組,這裏舉例爲A[10] = {16,14,10,8,7,9,3,2,4,1}

原创 排序-----------------插入排序,冒泡排序

1.插入排序 INSERT-SORT 設數組A是無序數組 非降序 for( i = 2; i  <= length[A]; i++ ) {  key = A[i];  j = i - 1;  while( j >= 1 && A[j] >

原创 運行galde編寫的UI程序時報錯:libglade-WARNING **: could not find signal handler 'gtk_reset'.

解決方案1:   在GCC編譯命令中加入-export-dynamic,如:   gcc test.c callbacks.c -o test `pkg-config --libs --cflags libglade-2.0 ` -e

原创 使用lsync和rsync實現主備雙機文件同步

一.環境 準備兩臺linux主機,操作系統爲ubuntu10.04: 一臺作爲rsync的服務端,假設ip爲192.85.1.9. 一臺作爲rsync的客戶端,假設ip爲192.85.1.112. 二.安裝rsync和lsync rsyn

原创 終端控制--termios結構

LINUX程序設計第三版 5.4節 一.termios是在POSIX規範中定義的標準接口,通過設置termios類型的數據結構中的值和使用一組函數調用,我們可以對終端接口進行控制 可用來調整終端行爲的操作模式: 輸入模式 輸出模式 控制模

原创 時間與日期

通常確定時間和日期對一個程序來說是很有用的,程序可能希望記錄運行時間.或者在某一時間後改變運行方式.例如一個遊戲可能需要玩家在倒計時內完成某個任務 所有的UNIX系統都使用同一時間和日期起點:格林威治時間(GMT)1970年1月1日.而M

原创 rsync+inotify文件實時同步

  1、rsync 與傳統的cp、tar備份方式相比,rsync具有安全性高、備份迅速、支持增量備份等優點,通過rsync可以解決對實時性要求不高的數據備份需求,例如定期的備份文件服務器數據到遠端服務器,對本地磁盤定期做數據鏡像等。 隨着

原创 文件鎖

文件鎖可用於實現多用戶多任務共享數據 linux提供兩種方法實現文件鎖定: 1.以原子操作的方式創建一個文件,我們稱之爲鎖文件,當這個文件被創建後,不允許其他進程再創建同名文件 2.第二種方法允許程序鎖定文件的一部分,從而可以獨享對這部分

原创 termios的例子

linux程序設計 5.4節 先看一個menu.c函數 #include <unistd.h> #include <stdio.h> #include <termios.h> char *menu[] = {"a - add new re

原创 glib庫簡單計時器的實現

#include <stdio.h> #include <glib.h> #define INTERVALS    10    //間隔10ms #

原创 兩個內存調試工具

一.動態內存分配是一個很容易出現程序漏洞的領域,且一旦出錯不易查找.這些錯誤通常由兩種原因引起: 1.指針malloc()分配的內存的指針值發生變化,又沒有別的指針指向它,那麼這塊內存在程序退出將變得無法訪問. 2.在一個已分配的內存塊前