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版本: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
Linux電源管理研究筆記—acpid工作原理 轉載時請註明出處:http://blog.csdn.net/absurd/ 在手持功能設計中,電源管理曆來為重要的研究課題之一。我們日常所說的省電就屬於電源管理的範疇,這也是我們最關心的一個部分。通過掛起不必要的裝置、降低CPU的頻率或者其它方法,可以減少能量的消耗,達到省電的目的。電源管理實際上是一個系統工程,從應用程式到核心架構,再到裝置驅動和硬體裝置,都要參與進來,才能達到電源管理的最佳化。本文介紹一下acpid的工作原理。 ACPI是Adv
Time of Update: 2018-12-03
top命令是Linux下常用的效能分析工具,能夠即時顯示系統中各個進程的資源佔用狀況,類似於Windows的工作管理員。下面詳細介紹它的使用方法。top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombieCpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0
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環境下多線程編程肯定會遇到需要條件變數的情況,此時必然要使用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
在X11平台下qt程式,首先準備好程式中需要使用的資源,庫和外掛程式... 比如你的可運行程式取名叫作panel,那把你的panel,那些libQt*.so.4和libQt*.so.4.6.0(連結和共用庫都要)放在同一目錄下(也可以不同,只要小小修改下shell檔案).plugins就不多說了。 在程式的同目錄下,建立一個空文檔,取名panel.sh (檔案名稱與程式名同名,副檔名為sh,shell檔案)。 在panel.sh中原封不動的寫入以下語句: #!/bin/sh
Time of Update: 2018-12-03
Linux上線程開發API的概要介紹 多線程開發在 Linux 平台上已經有成熟的 Pthread 庫支援。其涉及的多線程開發的最基本概念主要包含三點:線程,互斥鎖,條件。其中,線程操作又分線程的建立,退出,等待 3 種。互斥鎖則包括 4 種操作,分別是建立,銷毀,加鎖和解鎖。條件操作有 5 種操作:建立,銷毀,觸發,廣播和等待。其他的一些線程擴充概念,如號誌等,都可以通過上面的三個基本元素的基本操作封裝出來。 線程,互斥鎖,條件在 Linux 平台上對應的 API 可以用表 1
Time of Update: 2018-12-03
Linux系統資訊存放在檔案裡,檔案與普通的公務檔案類似。每個檔案都有自己的名字、內容、存放地址及其它一些管理資訊,如檔案的使用者、檔案的大小等。檔案可以是一封信、一個通訊錄,或者是程式的源語句、程式的資料,甚至可以包括可執行檔程式和其它非正文內容。 Linux檔案系統具有良好的結構,系統提供了很多檔案處理常式。這裡主要介紹常用的檔案處理命令。 file 1.作用 file通過探測檔案內容判斷檔案類型,使用許可權是所有使用者。 2.格式 file [options] 檔案名稱
Time of Update: 2018-12-03
在前面幾講中,我們把Linux命令按照在系統中的作用分成幾個部分分別予以介紹。但是,還有一些命令不好劃分,然而學習它們同樣是比較重要的。 tar 1.作用 tar命令是Unix/Linux系統中備份檔案的可靠方法,幾乎可以工作於任何環境中,它的使用許可權是所有使用者。 2.格式 tar [主選項+輔選項] 檔案或目錄 3.主要參數 使用該命令時,主選項是必須要有的,它告訴tar要做什麼事情,輔選項是輔助使用的,可以選用。 主選項:
Time of Update: 2018-12-03
當你在使用者空間需要讀寫一大片資料的時候,這個就用上了。 以下來自:http://www.yuanma.org/data/2006/1207/article_1916.htm假設我們在 kernel 裡產生一個 buffer,user 可以經由read,write 等 system call 來讀取或寫資料到這個 buffer 裡。如果有一個 user 寫資料到 buffer時,此時 buffer 已經滿了。那請問你要如何去處理這種情形呢 ? 第一種,傳給 user 一個錯誤訊息,說
Time of Update: 2018-12-03
1 安裝 tar zxvf xxx.tar.gz ./configure make make install2 使用pidstat:Usage: /usr/local/sysstat/bin/pidstat [ options ] [ <interval> [ <count> ] ]Options are:[ -C <command> ] [ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -s ][ -t ] [ -