Time of Update: 2018-12-06
在很多應用中都需要應用程式主動去查詢驅動中是否有資料可讀或者是否可以向驅動寫入資料,對於單線程的應用,這可能會導致進程阻塞。當然,可以使用select來不斷輪詢驅動是否可讀或可寫,但是這並不是很好的解決方案,更好的解決方式是由驅動主動通知應用程式其狀態,而不是應用程式主動去查詢驅動的狀態。
Time of Update: 2018-12-06
在/etc目錄下,做如下操作: (1)cd /etc vi exports /home *(sync,rw,no_root_squash) /opt *(sync,rw,no_root_squash) (2)重啟nfs service nfs restart 注意:防火牆的設定。如出現System Error: No route to
Time of Update: 2018-12-06
source命令用法:source FileName作用:在當前bash環境下讀取並執行FileName中的命令。註:該命令通常用命令“.”來替代。使用範例:source filename 或 . filename(中間有空格) source命令(從 C Shell 而來)是bash shell的內建命令。source命令也稱為“點命令”,也就是一個點符號(.);點命令,就是個點符號(.),(從Bourne Shell而來)是source的另一名稱。Source命令主要於運行指令碼。
Time of Update: 2018-12-06
使用文法:export [-p][變數名稱]=[變數設定值] 參數說明: [-p] 列出所有的shell賦予程式的環境變數。 命令功能:顯示或設定環境變數。 使用範例: export PATH=/mnt/updata/mips-4.3/bin:$PATH #這句話是設定系統變數,後面的":$PATH"是在系統變數後面增加一項。 export
Time of Update: 2018-12-06
這裡說的是在VMware虛擬機器下來實現在windows與Linux下共用一個檔案夾。下面來說明一下是如何?的:1.安裝VMware.Workstation.2.安裝Fedora10。3.完成前兩步後,開啟VMware->工具列—>虛擬機器->選擇 安裝Vmware工具.4. 開啟VMware->工具列—>虛擬機器—>可行動裝置—>CD-ROM—>設定—>使用ISO鏡像檔案(選擇vmware安裝目錄中linux.iso)5. mkdir
Time of Update: 2018-12-06
系統允許一個進程建立新進程,新進程即為子進程,子進程還可以建立新的子進程,形成進程樹結構模型。整個linux系統的所有進程也是一個樹形結構。樹根是系統自動構造的,即在核心態下執行的0號進程,它是所有進程的祖先。由0號進程建立1號進程(核心態),1號負責執行核心的部分初始化工作及進行系統配置,並建立若干個用於快取和虛擬主存管理的核心線程。隨後,1號進程調用execve()運行可執行程式init,並演變成使用者態1號進程,即init進程。它按照設定檔/etc/initab的要求,完成系統啟動工作,
Time of Update: 2018-12-06
1、將檔案checkout到本地目錄svn checkout path(path是伺服器上的目錄) 例如:svn checkout svn://192.168.1.1/pro/domain 簡寫:svn co2、往版本庫中添加新的檔案 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加目前的目錄下所有的php檔案)3、將改動的檔案提交到版本庫 svn commit -m "LogMessage"
Time of Update: 2018-12-06
groups 查看當前登入使用者的組內成員groups gliethttp 查看gliethttp使用者所在的組,以及組內成員whoami 查看當前登入使用者名稱/etc/group檔案包含所有組/etc/shadow和/etc/passwd系統存在的所有使用者名稱1、/etc/group
Time of Update: 2018-12-06
編譯:第一步、是進行先行編譯,使用-E參數可以讓GCC在預先處理結束後停止編譯過程:gcc -E hello.c -o hello.i預先處理的宏定義插入到hello.i中第二步、是將hello.i編譯為目標代碼,這可以通過使用-c參數來完成:gcc -c hello.i -o hello.o也可以通過源檔案直接產生gcc -c hello.c第三步、是將產生的目標檔案連結成可執行檔:gcc hello.o -o hello也可以通過源檔案直接產生gcc -o hello hello.c警告:1
Time of Update: 2018-12-06
1,inode中儲存喲普檔案內容的塊號碼,Linux核心進行讀寫操作時,會根據inode中的盤塊號碼來操作相應的盤塊,完成對檔案的讀寫。mv命令用於移動一個檔案,即使要移動的檔案很大,其移動速度也很快,原因是mv命令沒有移動檔案內容而是改變了檔案的目錄項。該命令在新的目錄下建立一個新的目錄項,並將其指向原來的檔案即可。2,Linux環境使用Link函數建立一個永久連結,其函數原型:int link(const char *path1,const char*path2),第一個參數是現有檔案名稱,
Time of Update: 2018-12-06
進程一旦調用了wait,就立即阻塞自己,由wait自動分析是否當前進程的某個子進程已經退出,如果讓它找到了這樣一個已經變成殭屍的子進程,wait 就會收集這個子進程的資訊, 並把它徹底銷毀後返回;如果沒有找到這樣一個子進程,wait就會一直阻塞在這裡,直到有一個出現為止。如果該進程沒有子進程,則立即出錯返回,傳回值為-1(注意,是wait()函數立即返回,而不是說該父進程也跟著結束了,父進程裡該語句後的內容還是要照樣接著執行的)wait(等待子進程中斷或結束)相關函數
Time of Update: 2018-12-06
一,流與緩衝 流I/O是由C語言的標準函數提供的,這些I/O可以替代系統中提供的read和write函數。事實上流I/O的內部封裝了這兩個基本的檔案讀寫系統調用。使用流I/O在某些程度上來講要方便一些,這些I/O在效率上沒有特別大的差異。 基於流的操作最終會調用read或者write函數進行操作。為了使程式的運行效率最高,流對象通常會提供緩衝區,以減少調用系統I/O庫函數的次數。
Time of Update: 2018-12-06
虛擬記憶體---linux作業系統採用虛擬記憶體管理技術,使得每個進程都有獨立的進程地址空間,該空間是大小為3G,使用者看到和接觸的都是虛擬位址,無法看到實際的物理地址。利用這種虛擬位址不但能起到保護作業系統的作用,而且更重要的是使用者程式可使用比實際實體記憶體更大的地址空間。 linux將4G的虛擬位址空間劃分為兩個部分------使用者空間和核心空間。使用者空間從0----0xbfffffff,核心空間從3G----4G。使用者進程通常情況下只能訪問使用者空間的虛擬位址,不能訪問核心空間。例
Time of Update: 2018-12-06
Socket中的send函數可以發送字串,但不能直接發送結構體,因此在發送端先把結構體轉成字串,然後用send發送,在接收端recv字串,再轉換成原先的結構體,這個就是解決問題的主要思路,實現中要注意的問題在下文闡述。 為了用戶端之間能夠互相通訊,實現私聊,我採用伺服器轉寄的方式,因此使用者發送的每條訊息中除了訊息主體外,還必須包含有寄件者、接收者ID等資訊,如此採用結構體便是最佳的辦法了。我定義的結構體如下:struct send_info{char info_from[20];
Time of Update: 2018-12-06
伺服器端: #include<stdio.h> #include<stdlib.h> #include<sys/socket.h> #include<arpa/inet.h> #include<string.h> #include<errno.h> #include<unistd.h> #define BUFSIZE 1024 int main(void)
Time of Update: 2018-12-06
第一次在Linux下安裝軟體。 作為一個對Linux沒用過幾天的人來說,學會了如何在Linux上安裝軟體也談得上是一種收穫。對於.tar.gz類型檔案的安裝的一般步驟如下(找到該檔案,解壓,配置,編譯,安裝):[yonghu@localhost ~]# su root[root@localhost ~]# cd /home/new/Desktop[root@localhost Desktop]# tar -xzvf
Time of Update: 2018-12-06
1.closesocket(一般不會立即關閉而經曆TIME_WAIT的過程)後想繼續重用該socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已經處於串連狀態的soket在調用closesocket後強制關閉,不經曆TIME_WAIT的過程:BOOL bDontLinger =
Time of Update: 2018-12-06
linux 裡的eclips本身就可以編譯C/C++這讓我感到十分欣慰,^_^。 可是編寫好OpenGL程式後確不能編譯,報錯:.....undefined reference to `glBegin'..... 結果是glut函數全都不能被識別。究其原因,是因為沒有連結到相應的庫,比如在終端裡用gcc編譯的時候需要手動連結幾個庫: -lGL -lGLU -lglut。因此需要在eclips裡加如這幾個庫。步驟如下:1,點擊Project選折下拉式清單裡的properties2
Time of Update: 2018-12-06
Linux 守護進程的編程方法 守護進程(Daemon)是運行在背景一種特殊進程。它獨立於控制終端並且周期性地執行某種任務或等待處理某些發生的事件。守護進程是一種很有用的進程。Linux的大多數伺服器就是用守護進程實現的。比如,Internet伺服器inetd,Web伺服器httpd等。同時,守護進程完成許多系統任務。比如,作業規划進程crond,列印進程lpd等。
Time of Update: 2018-12-06
一,read 函數從開啟的裝置或檔案中讀取資料#include <unistd.h> ssize_t read(int fd, void *buf, size_t count); 傳回值:成功返回讀取的位元組數,出錯返回-1並設定errno,如果在調read之前已到達檔案末尾,則這次read返回0 讀上來的資料儲存在緩衝區buf 中,同時檔案的當前讀寫位置向後移。注意這個讀寫位置和使用C標準I/O庫時的讀寫位置有可能不同,這個讀寫位置是記在核心中的,