Time of Update: 2018-12-03
最近做一個通訊端編程的應用,伺服器使用Unix。對於通訊端非同步選擇,一般有兩種模式,一種是對每個新到來的串連都建立一個線程(pthread),可以使用線程池對其進行管理;另外一種是使用單進程下的非同步I/O,通過函數select()來實現;select()函數可以完成非阻塞方式工作的程式,它能夠監視我們需要監視的檔案描述符的變化情況——讀寫或是異常這裡的非阻塞是指進程或線程執行此函數時不必非要等待事件的發生,一旦執行肯定返回,以傳回值的不同來反映函數的執行情況如果事件發生則與阻塞方式相同;若事
Time of Update: 2018-12-03
應用程式層開發的,可以看看《Linux Application Development》《Advanced Linux Programming》第二本廢人同學曾經翻譯過,譯稿可從這裡擷取。另外Linux和Unix淵源極深,因此,應用程式層開發也可以看看《Advanced Programming in the Unix Environment》《The Art of UNIX Programming》核心開發的,可以看看《Linux Kernel
Time of Update: 2018-12-03
cp命令 該命令的功能是將給出的檔案或目錄拷貝到另一檔案或目錄中,同MSDOS下的copy命令一樣,功能十分強大。 文法: cp [選項] 源檔案或目錄 目標檔案或目錄 說明:該命令把指定的源檔案複製到目標檔案或把多個源檔案複製到目標目錄中。該命令的各選項含義如下:- a 該選項通常在拷貝目錄時使用。它保留連結、檔案屬性,並遞迴地拷貝目錄,其作用等於dpR選項的組合。- d 拷貝時保留連結。- f 刪除已經存在的目標檔案而不提示。- i 和f選項相反,在覆蓋目標檔案之前將給出提示要求使用者確認。
Time of Update: 2018-12-03
Linux裡面有兩套管理網路連接的方案:1、/etc/network/interfaces(/etc/init.d/networking)2、NetworkManager兩套方案是衝突的,不能同時共存。第一個方案適用於沒有X的環境,如:伺服器;或者那些完全不需要改動串連的場合。第二套方案使用於有案頭的環境,特別是筆記本,搬來搬去,網路連接情況隨時會變的。-------------他們兩個為了避免衝突,又能共用配置,就有了下面的解決方案:1、當NetworkManager發現/etc/networ
Time of Update: 2018-12-03
問題起因:linux下C++採用utf-8編碼方式,因此char類型不是單純的一個字元一個位元組。一個英文字元佔一個位元組,而一個中文字元則不只佔了一個位元組(具體查看Unicode編碼方案簡介及實現一文)。如下所示,分別輸出中文的“王子”和其中文拼音的“wangzi”代碼: char name[16]={0}; strcpy(name, "WangZi"); //strcpy(name, "王子");在Linux環境下,記憶體中分別表示如下:print name$1 =
Time of Update: 2018-12-03
參照:http://www.linuxdiyf.com/viewarticle.php?id=81130常用的資料類型time_t 一般用來儲存國際化時間,用time()函數可直接擷取到;結構體:tm 一般用來儲存本地時間,可通過將time_t格式轉化而來;結構體:time_val 一般用來儲存計數型的時間(秒/毫秒);有些也用struct
Time of Update: 2018-12-03
轉載自:http://www.cnblogs.com/feisky/archive/2010/03/20/1690561.html使用定時器的目的無非是為了周期性的執行某一任務,或者是到了一個指定時間去執行某一個任務。要達到這一目的,一般有兩個常見的比較有效方法。一個是用linux內部的三個定時器:ITIME_REAL,ITIMER_VIRTUAL,ITIME_PROF;另一個是用sleep, usleep函數讓進程睡眠一段時間;其實,還有一個方法,那就是用gettimeofday(),
Time of Update: 2018-12-03
這篇文章只講述下條件變數pthread_cond_t的作用和理解,函數已在別的文章中給出。互斥鎖一個明顯的缺點是它只有兩種狀態:鎖定和非鎖定。而條件變數通過允許線程阻塞和等待另一個線程發送訊號的方法彌補了互斥鎖的不足,它常和互斥鎖一起使用。(1)等待機制使用時,條件變數被用來阻塞一個線程:當條件不滿足時,線程往往解開相應的互斥鎖並等待條件發生變化;一旦其它的某個線程改變了條件變數,系統將通知相應的條件變數喚醒一個或多個正被此條件變數阻塞的線程。這些線程將重新鎖定互斥鎖並重新測試條件(檢測條件必須
Time of Update: 2018-12-03
轉自:http://www.linuxdiyf.com/viewarticle.php?id=45164在Linux上進行編碼轉換時,既可以利用iconv函數族編程實現,也可以利用iconv命令來實現(針對檔案進行轉換) 一、利用iconv函數族進行編碼轉換 iconv函數族的標頭檔是iconv.h使用前需包含之:#include <iconv.h>iconv函數族有三個函數,原型如下:(1) iconv_open()函數原型:iconv_t iconv_open(const
Time of Update: 2018-12-03
****************裝Fedora的災禍****************前幾天用了Ubuntu 很不爽,於是改裝了Fedora 11, 想不到在安裝過程中,本來應該按ignore的,一不小心按了 Re-initialize the drive,
Time of Update: 2018-12-03
Linux中tty、pty、pts的概念區別基本概念:1> tty(終端裝置的統稱):tty一詞源於Teletypes,或者teletypewriters,原來指的是電傳打字機,是通過串列線用印表機鍵盤通過閱讀和發送資訊的東西,後來這東西被鍵盤與顯示器取代,所以現在叫終端比較合適。終端是一種字元型裝置,它有多種類型,通常使用tty來簡稱各種類型的終端裝置。2> pty(虛擬終端):但是如果我們遠程telnet到主機或使用xterm時不也需要一個終端互動嗎?是的,這就是虛擬終端pty(
Time of Update: 2018-12-03
首先設定日期就用 sudo date -s 17:17:00 超級使用者才能有許可權哦如果要改變時區,我想到了一個笨辦法,就是修改~/.bashrc, 在裡面適當的位置加一句TZ=CST; export TZTZ 是 time zone 的縮寫;我把它改成了 CST , 就是中國所在的時區,然後把這個變數變成全域的,這時時區就改過來了。但這隻是暫時改變而已,要想修改開機預設的時區,請看下述方法:修改時區方法 1)找到相應的時區檔案
Time of Update: 2018-12-03
學習Linux 網路編程有一段時間了,作為一個總結,寫一個基於socket的proxy,算是複習前面的所學。一直以來就有一個寫proxy的想法,實驗室項目中我所負責的模組就是一個Http
Time of Update: 2018-12-03
原文節選自:http://blog.csdn.net/gongweijiao/article/details/8425629
Time of Update: 2018-12-03
原文連結:http://hi.baidu.com/igtdqoihjhbacsq/item/9b937ad7c69d4311d78ed091我試過hzxing的這個方法,在我的64位 10.04的ubuntu上運行過,方法能行得通。 感謝hzxing!以下是文章本文********************************************hzxing1010的空間2010-01-07 11:49
Time of Update: 2018-12-03
Linux核心編譯後地址空間的整理 有這麼一系列的問題,是否在困擾著你:使用者程式編譯串連形成的地址空間在什麼範圍內?核心編譯後地址空間在什麼範圍內?要對外設進行訪問,I/O的地址空間又是什麼樣的? 先回答第一個問題。Linux 最常見的可執行檔格式為elf(Executable and Linkable
Time of Update: 2018-12-03
etc/profile:此檔案為系統的每個使用者佈建環境資訊,當使用者第一次登入時,該檔案被執行.並從/etc/profile.d目錄的設定檔中搜集shell的設定./etc/bashrc:為每一個運行bash shell的使用者執行此檔案.當bash shell被開啟時,該檔案被讀取.~/.bash_profile:每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,當使用者登入時,該檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案.~/.bashrc:
Time of Update: 2018-12-03
最近要調試自己的程式,就把以前自己記錄下來的一些基本的gdb調試命令給發不出來。 例子:如果有一個test.c檔案,那麼當出現運行錯誤,怎麼去調試呢。gcc test.c -o test這裡只是產生了test可執行檔./test運行出現錯誤,或者得不到結果和你預測的是一樣,那麼都要進去跟蹤調試。這裡就要用到了gdb,這個調試工具。gdb 調試 需要在編譯時間加入條件 -g調試的幾個基本的命令如下:gdb -q filename //負載檔案到gdbbreak [1
Time of Update: 2018-12-03
Linux 時鐘分為系統時鐘(System Clock)和硬體(Real Time Clock ,簡稱RTC )時鐘。系統時鐘是指當前Linux Kernel中的時鐘,而硬體時鐘則是主板上由電池供電的時鐘,這個硬體時鐘可以在BIOS中進行設定。當Linux 啟動時,硬體時鐘會去讀取系統時鐘的設定,然後系統時鐘就會獨立於硬體運作。
Time of Update: 2018-12-03
首先來說一下mv命令,在man mv中我們可以看到對於mv命令的介紹是這樣的:mv -move(rename) files可以看到mv命令確實有重新命名的功能,但是實際應用中,它只能對單個檔案重新命名,命令如下:mv [path/]oldfilename [path/]newfilename“mv命令只能對單個檔案重新命名”,這實就是mv命令和rename命令的在重新命名方面的根本區別。Linux的rename