Time of Update: 2018-12-04
前提:廢話不多講,無法跟蹤進入調試,講得再多也是廢話。如何進入調試?1.編譯加上 -g 選項2.執行 gdb a.out (注意:a.out一定要存在,或者是指定路徑,這樣gdb才能導入並進行詳細分析)3.查看源檔案並設置斷點(設置斷點可以設置函數斷點,比如 b myfuncname)4.執行,run arguments (需要加上a.out的參數) GDB 概述———— GDB 是 GNU 開源組織發布的一個強大的 UNIX 下的程式調試工具。或許,各位比較喜歡那種圖形介面方式的,像
Time of Update: 2018-12-04
linux下的shell是很強大的,所以想在window下也可以用這些命令,有一些辦法:1) 安裝linux虛擬機器2) 使用cgwin,這個是最強的交叉編譯工具,但還有有點大,全部有1G多3) UnxUtils,一個比較老,但很實用輕巧的工具集,只有3M左右\usr\local\wbin 的絕對目錄加到系統變數path裡面,就可以用shell命令了,如ls,cat等等4) gnuwin32 , 這個算是比較官方的工具了,但很多命令都沒有,比如cat5) msysgit,
Time of Update: 2018-12-04
測試手段:1dd if=/dev/zero of=tmp bs=1M count=10用dd命令測試瞬間寫的能力。新增利用iozone命令測試記憶體盤效能:1iozone -a -i 1 -i 0 -c -g 5M -n 1M測試項包括寫入,重複寫入,讀出,重複讀出橫座標是測試的時候寫入讀出的快檔案大小,縱座標是每秒的寫入讀出的位元組數RamDisk有三種實現方式:在Linux中可以將一部分記憶體mount為分區來使用,通常稱之為RamDisk,分為:Ramdisk, ramfs, tmpfs.
Time of Update: 2018-12-04
本文檔參考著linux裝置驅動開發詳解一起看8.1 阻塞與非阻塞 I/O阻塞操作是指在執行裝置操作時若不能獲得資源則掛起進程,直到滿足可操作的條件後再進行操作;被掛起的進程進入休眠狀態,被從調度器的運行隊列移走,直到等待的條件被滿足。非阻塞操作的進程在不能進行裝置操作時並不掛起,它或者放棄,或者不停地查詢,直至可以進行操作為止。 阻塞從字面上聽起來似乎意味著低效率,實則不然,如果裝置驅動不阻塞,則使用者想擷取裝置資源只能不停地查詢,這反而會無謂地耗費 CPU 資源。而阻塞訪問時,
Time of Update: 2018-12-04
Linux下Snort的安裝配置snort是一個免費的基於libpcap的輕量級網路入侵偵測系統。它能夠跨系統平台操作,內建輕量級的入侵偵查工具可以用於監視小型的TCP/IP網路,在進行網路監視時snort能夠把網路資料和規則進行模式比對,從而檢測出可能的入侵企圖,同時它也可以使用SPADE外掛程式,使用統計學方法對網路資料進行異常檢測,這些強大的檢測功能為網路系統管理員對於入侵行為做出適當的反擊提供了足夠的資訊。首先需要下載mysql,apache,php,libpcap,adodb,snor
Time of Update: 2018-12-04
接上回: linux編程的108種奇淫巧計-7(Lock-free實驗) 本節增加test_and_set的原語和一個spinlock比較完整的實現(參照nginx spin lock),主要的變化在於插入了__asm__
Time of Update: 2018-12-04
1IO的共用和效率read與write其中資料緩衝的大小建設設定為:getpagesize (一頁的大小)或者40922 定位與讀取資料(隨機讀取)read和write時自動移動讀取位置lseek改變讀取位置pread/pwrite在指定位置讀寫2.1lseek函數說明 off_t lseek(int fd, //檔案描述符 off_t offset,//位移 int whence);//定位參數 開始SEEK_SET, 當前位置SEEK_CUR ,
Time of Update: 2018-12-04
http://mydear.itpub.net/post/28567/504859 建立檔案系統Linux 使用 mkfs 命令來建立檔案系統,用 mkswap 命令來建立交換空間。mkfs 命令實際上是幾個特定於檔案系統的命令的前端,這些命令包括針對 ext3 的 mkfs.ext3 和針對 ReiserFS 的 mkfs.reiserfs。您的檔案系統上安裝的是什麼檔案系統支援?使用 ls /sbin/mk* 命令來找到答案。清單 11 展示了一個樣本。清單 11.
Time of Update: 2018-12-05
一、什麼是socketsocket可以看成是使用者進程與核心網路通訊協定棧的編程介面。socket不僅可以用於原生處理序間通訊,還可以用於網路上不同主機的處理序間通訊。socket API是一層抽象的網路編程介面,適用於各種底層網路通訊協定,如IPv4、IPv6,以及以後要講的UNIX Domain Socket。然而,各種網路通訊協定的地址格式並不相同,如所示:IPv4和IPv6的地址格式定義在netinet/in.h中,IPv4地址用sockaddr_in結構體表示,包括16位連接埠號碼和3
Time of Update: 2018-12-05
一、sigqueue函數功能:新的發送訊號系統調用,主要是針對即時訊號提出的支援訊號帶有參數,與函數sigaction()配合使用。原型:int sigqueue(pid_t pid, int sig, const union sigval value);參數: sigqueue的第一個參數是指定接收訊號的進程id,第二個參數確定即將發送的訊號,第三個參數是一個聯合資料結構union sigval,指定了訊號傳遞的參數,即通常所說的4位元組值。傳回值:成功返回0,失敗返回-1 typedef
Time of Update: 2018-12-05
一、ISO/OSI參考模型OSI(open system interconnection)開放系統互聯模型是由ISO(International Organization for Standardization)國際標準組織定義的網路分層模型,共七層,如。物理層(Physical Layer):物理層定義了所有電子及物理裝置的規範,為上層的傳輸提供了一個物理介質,本層中資料轉送的單位為位元(bit)。屬於本層定義的規範有EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-
Time of Update: 2018-12-05
這是我們作業系統的大作業。原理就是inline hook 那個 proc 檔案系統,根目錄下的 readdir 的函數。替換掉第三個參數,filldir。代碼爆短,60來行。Ubuntu 10.04
Time of Update: 2018-12-05
汗!!!這個部落格是前幾天寫的,不過其中有個錯誤,導致在編譯uboot的時候出現錯誤,才發現原來有個問題:解壓完arm-linux-gcc-4.4.3.tgz後,配置的檔案錯誤,之前在一本書看到的是配置/etc/bash.bashrc檔案,可這樣是錯誤的,應該配置/etc/profile檔案。 移植到開發板上的每一個代碼都必須通過交叉編譯後才能在開發板的環境中運行。 這裡我用的是arm-linux-gcc-4.4.3.tgz,當然可以到網上下載其他版本的,也可以自己搭建的。記得以前搭
Time of Update: 2018-12-05
開啟動態庫函數(dlopen或LoadLibrary)中指定動態庫的檔案名稱,在程式運行時按照以下次序來搜尋動態庫一、庫檔案的搜尋路徑:1、在設定檔/etc/ld.so.conf中指定動態庫搜尋路徑(需要添加其它庫檔案的路徑,在檔案的最後添加具體的路徑即可 [ 如:/usr/local/lib
Time of Update: 2018-12-05
對於Window下的常見壓縮檔.zip和.rar,Linux也有相應的方法來解壓它們:1:對於.ziplinux下提供了zip和unzip程式,zip是壓縮程式,unzip是解壓程式。它們的參數選項很多,這裡只做簡單介紹,舉例說明一下其用法:# zip all.zip *.jpg(這條命令是將所有.jpg的檔案壓縮成一個zip包)# unzip all.zip(這條命令是將all.zip中的所有檔案解壓出來)2:對於.rar要在linux下處理.rar檔案,需要安裝RAR for
Time of Update: 2018-12-05
首先感謝如下兩篇的blog,讓我走出了很大的一個誤區:http://www.cppblog.com/kongque/archive/2011/01/18/138765.aspxhttp://blog.csdn.net/zjwoody/article/details/7882240在我的一個項目中,因為需要與串口通訊,每次讀寫都需要延時usleep(1000)=1ms,但是通訊量非常大,每一次工作這樣的通訊大概有300次左右,這樣算下耗時應該是300ms左右。但是通過strace列印出系統函數調用
Time of Update: 2018-12-05
由於經常需要在類比終端上遠程登上伺服器做各種操作, 而且很多時候需要同時用不同的視窗登上不同的伺服器, 本辦法能讓人一目瞭然的分辨出哪個視窗登陸的是哪台機器(最好是IP). bash支援環境變數PROMPT_COMMAND, 將其設定為一個命令列字串或者是包含命令列字串的一個檔案的檔案名稱, 命令列用來在顯示prompt之前執行. 在redhat系列的機器上(redhat,fedora)都支援檔案/etc/sysconfig/bash-prompt-xterm來儲存bash+xterm下的PRO
Time of Update: 2018-12-05
ubuntu 11.04 搭建Arm-Linux-gcc 交叉編譯環境 為了給大家節省時間,快點學習Arm,咱就廢話少說,直接進入正題好了: 我使用的版本是arm-linux-gcc 4.4.3 一、下載arm-linux-gcc-4.4.3.tar.gz(下載)安裝包到Desktop。在目錄 usr/local 下建立一個arm檔案夾(usr/local
Time of Update: 2018-12-05
本程式還有兩個bin檔案提供數獨資料,可以在我的資源裡面下載.下面是makefile 標頭檔 和 源檔案....## Makefile## Computer Science 50# Problem Set 4#sudoku: Makefile sudoku.c sudoku.hgcc -ggdb -std=c99 -Wall -Werror -Wformat=0 -Wno-unused-but-set-variable -o sudoku sudoku.c -lncurses
Time of Update: 2018-12-05
檔案名稱test.shUSER=nihaoecho "hello $USER"#$0 指令碼名echo "script name is : `basename $0`"#$1 第一個變數名echo "first param is : $1"#$* 所有變數echo "all params are : $*"#$# 變數長度echo "params' length is : $# "#$@ 所有變數echo "all params are : '$@'"#$$ 當前指令碼進程echo