Time of Update: 2018-12-03
為了便於通過程式來獲得和修改終端參數,Linux還提供了tcgetattr函數和tcsetattr函數。tcgetattr用於擷取終端的相關參數,而tcsetattr函數用於設定終端參數。這兩個函數的具體資訊如表6.2所示。表6.2 tcgetattr函數和tcsetattr函數標頭檔<termios.h><unistd.h>函數形式int tcgetattr(int fd, struct termios *termios_p);int tcsetattr(int fd,
Time of Update: 2018-12-03
Linux系統調用-- recv/recvfrom/recvmsg函數詳解功能描述: 從通訊端上接收一個訊息。對於recvfrom 和
Time of Update: 2018-12-03
Linux版本:RedHat AS4socket編程關閉串連後連接埠並不是立即釋放,預設時間是60秒後釋放。用命令netstat -an查看可以發現存在大量的TIME_WAIT如果串連頻繁的話會導致連接埠用盡。解決方案:# vi /etc/sysctl.conf 添加如下內容net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies=1 儲存退出後執行 # sysctl
Time of Update: 2018-12-03
Ubuntu常用命令 sudo apt-get install 軟體名 安裝軟體命令 sudo nautilus 開啟檔案(有root許可權) su root 切換到“root” ls 列出目前的目錄檔案(不包括隱含檔案) ls -a 列出目前的目錄檔案(包括隱含檔案) ls -l 列出目前的目錄下檔案的詳細資料 cd .. 回目前的目錄的上一級目錄 cd - 回上一次所在的目錄 cd ~ 或 cd 回目前使用者的宿主目錄 mkdir 目錄名 建立一個目錄 rmdir 空目錄名 刪除一個空目錄
Time of Update: 2018-12-03
系統允許一個進程建立新進程,新進程即為子進程,子進程還可以建立新的子進程,形成進程樹結構模型。整個linux系統的所有進程也是一個樹形結構。樹根是系統自動構造的,即在核心態下執行的0號進程,它是所有進程的祖先。由0號進程建立1號進程(核心態),1號負責執行核心的部分初始化工作及進行系統配置,並建立若干個用於快取和虛擬主存管理的核心線程。隨後,1號進程調用execve()運行可執行程式init,並演變成使用者態1號進程,即init進程。它按照設定檔/etc/initab的要求,完成系統啟動工作,建
Time of Update: 2018-12-03
在backup.sh檔案中,寫入這些:BACKUP="/home/gfdpsdev/backup/dps_backup"TIME=$(date +%F)BACKUP_PATH=/home/gfdpsdev/backup/dps_backup/$TIMEif [ ! -p $BACKUP_PATH ]then mkdir -p "$BACKUP_PATH"ficd BACKUPtar -X *.list -zcvf $BACKUP_PATH/dps_$TIME.tar.gz
Time of Update: 2018-12-03
從網上搜尋的,這三個常用命令可能有很多重複的,有時間整理下。不過這樣也好就當加強記憶了apt-get:debian系系統的軟體包管理程式(其圖形化前端就是大名鼎鼎的新立得了),會自動幫你搞定依賴關係最常用參數:update —-與你的軟體源(在/etc/apt/sources.list中列出)更新軟體包列表,換源後需要執行upgrade —-根據update得到的源軟體庫與本地已經安裝的對比,(如果需要升級就)全部升級install
Time of Update: 2018-12-03
安裝完linux mint 13之後,我第一件想做的事情就是連網安裝“裝機必備”軟體(比如 google chrome 和 smplayer)。可令我感到沮喪的是,在系統設定 -> 網路 裡面,我竟然無法添加 DSL/PPPoE 撥號連結!費了老大勁才在preferences -> 網路連接裡找到。要開啟網路連接,有三種途徑:點擊左下角菜單 -> preferences -> 網路連接按windows鍵 -> 直接鍵入 connect ->
Time of Update: 2018-12-03
第1步:編輯得到舉例的程式--hello.h、hello.c和main.c;hello.h為該函數庫的標頭檔。hello.c是函數庫的來源程式,其中包含公用函數hello,該函數將在螢幕上輸出"Hello XXX!"。main.c為測試庫檔案的主程式,在主程式中調用了公用函數hello。 第2步:將hello.c編譯成.o檔案;無論靜態庫,還是動態庫,都是由.o檔案建立的。因此,我們必須將來源程式hello.c通過gcc先編譯成.o檔案。在系統提示符下鍵入以下命令得到hello.o檔案。#
Time of Update: 2018-12-03
linux的errno定義,在標頭檔#include <errno.h> 124 EMEDIUMTYPE Wrong medium type 123 ENOMEDIUM No medium found 122 EDQUOT Disk quota exceeded 121 EREMOTEIO Remote I/O error 120 EISNAM Is a named type file 119 ENAVAIL
Time of Update: 2018-12-03
LINUX環境下多線程編程肯定會遇到需要條件變數的情況,此時必然要使用pthread_cond_wait()函數。但這個函數的執行過程比較難於理解。 pthread_cond_wait()的工作流程如下(以MAN中的EXAMPLE為例): Consider two shared variables x and y, protected by the mutex mut, and a condition vari- able cond that is to be
Time of Update: 2018-12-03
.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(註:tar是打包,不是壓縮!)———————————————.gz解壓1:gunzip FileName.gz解壓2:gzip -d FileName.gz壓縮:gzip FileName.tar.gz 和 .tgz解壓:tar zxvf FileName.tar.gz壓縮:tar zcvf FileName.tar.gz
Time of Update: 2018-12-03
環境VMWare 7.1 + Redhat Linux9 + VNCViewer 小結1. Linux 下安裝VNCServer,由於我的機子上本來就有,在此不贅述。詳情參考此文;2. 準備VNCViewer,點擊此處下載;3. Linux下啟動VNCServer,然後終端輸入vncserver:2,為遠端存取的會話設定密碼(2為會話號,注意冒號前有空格,最開始我沒設定會話號,見); [plain] view
Time of Update: 2018-12-03
這個貪吃蛇是我初學LINUX時寫的,使用了curse庫,現在發上來和大家共用一下吧。吹一下牛:看來我當前C語言學得還真不錯啊,哈哈。廢話說完了,上代碼://mysnake1.0.c//編譯命令:cc mysnake1.0.c -lcurses -o mysnake1.0//用方向鍵控制蛇的方向#include <stdio.h>#include <stdlib.h>#include <curses.h>#include
Time of Update: 2018-12-03
在Linux編程中,經常要調用一些系統命令或SHELL指令碼來協助我們完成一些操作,大部分情況下system函數可以勝任,但有時在操作完成之後,我們還要擷取它的輸出,這時system函數就無能為力了。為此我編寫了一個函數,可以先讓系統執行一條命令,然後利用管道技術擷取它的輸出。上代碼:#include <sys/types.h> #include <unistd.h> #include <stdlib.h> #include
Time of Update: 2018-12-03
參考資料 Linux核心完全注釋.pdf 網上相關資料 ! setup程式的主要作用是利用rom bios的中斷來讀取機器系統參數,並將這些資料儲存在0x90000! 開始的位置(覆蓋掉了bootsect程式所在的位置),所取得的參數被核心的相關程式使用。注意在bootsect! 中已經將該模組和system、模組載入到記憶體中。! 然後setup程式將system模組從地址0x10000-0x8fff(當時認為核心的最大值)整塊移動到記憶體的絕對位址! 0x00000處。
Time of Update: 2018-12-03
linux進程間傳遞描述符每個進程都擁有自己獨立的進程空間,這使得描述符在進程之間的傳遞變得有點複雜,這個屬於進階處理序間通訊的內容,下面就來說說。Linux 下的描述符傳遞Linux 系統系下,子進程會自動繼承父進程已開啟的描述符,實際應用中,可能父進程需要向子進程傳遞“後開啟的描述符”,或者子進程需要向父進程傳遞;或者兩個進程可能是無關的,顯然這需要一套傳遞機制。簡單的說,首先需要在這兩個進程之間建立一個 Unix 域通訊端介面作為訊息傳遞的通道( Linux 系統上使用socketpair
Time of Update: 2018-12-03
一般情況下,我們用Qt編譯出來的程式是要依賴於系統Qt庫的,也就是這個程式移到別的沒有安裝Qt庫的系統上是不能使用的。會提示缺少……庫檔案之類的錯誤。這就是動態編譯的結果。但是如果我們想編譯一個程式,這個程式在發給別人後,他們可以直接開啟,而不需要特別地去先安裝Qt庫,那就需要採用靜態編譯了。在Linux下如何靜態編譯Qt程式呢?首先需要先安裝靜態編譯的Qt,也就是靜態編譯Qt程式首先是需要一個靜態編譯安裝的Qt1、下載源安裝程式,如
Time of Update: 2018-12-03
這是我自己寫的一個擁有安全執行緒和阻塞功能的vector類SemVector(LINUX平台),歡迎大家使用//semvector.h#ifndef SEMVECTOR_H_#define SEMVECTOR_H_#include <pthread.h>#include <unistd.h>#include <semaphore.h>#include <stdio.h>template<class T>class
Time of Update: 2018-12-03
在X11平台下qt程式,首先準備好程式中需要使用的資源,庫和外掛程式... 比如你的可運行程式取名叫作panel,那把你的panel,那些libQt*.so.4和libQt*.so.4.6.0(連結和共用庫都要)放在同一目錄下(也可以不同,只要小小修改下shell檔案).plugins就不多說了。 在程式的同目錄下,建立一個空文檔,取名panel.sh (檔案名稱與程式名同名,副檔名為sh,shell檔案)。 在panel.sh中原封不動的寫入以下語句: #!/bin/sh