Time of Update: 2018-12-04
編譯核心確實是個讓人窒息和苦悶的過程,經過幾天的努力,今天終於順利通過。感謝好友“編程夜未眠”的支援人員我是在Vmware下裝的Red Hat 9,下載了linux的核心版本2.6.14.4(1)解壓至/usr/src目錄下,注意必須得在linux中解壓(2)進入解壓後的目錄,$make menuconfig(基於X11的圖形核心組態工具)。注意,在Vmware下以下選項必須選上,否則編譯要出問題: Device Drivers --->SCSI device
Time of Update: 2018-12-04
UNIX/LINUX 多線程編程 1. 線程 線程通常叫做輕型的進程。雖然這個叫法有些簡單化,但這有利於瞭解線程的概念。因為線程和進程比起來很小,所以相對來說,線程花費更少的CPU資源。進程往往需要它們自己的資源,但線程之間可以共用資源,所以線程更加節省記憶體。Mach的線程使得程式員可以編寫並發啟動並執行程式,而這些程式既可以運行在單一處理器的機器上,也可以運行在多處理器的機器中。另外,在單一處理器環境中,當應用程式執行容易引起阻塞和延遲的操作時,線程可以提高效率。
Time of Update: 2018-12-04
我們經常會碰到這樣的問題,用 telnet/ssh 登入了遠端 Linux 伺服器,運行了一些耗時較長的任務, 結果卻由於網路的不穩定導致任務中途失敗。如何讓命令提交後不受本地關閉終端視窗/網路中斷連線的幹擾呢?下面舉了一些例子, 您可以針對不同的情境選擇不同的方式來處理這個問題。nohup/setsid/&情境:如果只是臨時有一個命令需要長時間運行,什麼方法能最簡便的保證它在後台穩定運行呢?hangup 名稱的來由在 Unix 的早期版本中,每個終端都會通過 modem 和系統通訊。
Time of Update: 2018-12-04
一. 非強制中斷概況 非強制中斷是利用硬體中斷的概念,用軟體方式進行類比,實現宏觀上的非同步執行效果。很多情況下,非強制中斷和"訊號"有些類似,同時,非強制中斷又是和硬中斷相對應的,"硬中斷是外部裝置對CPU的中斷","非強制中斷通常是硬中斷服務程式對核心的中斷","訊號則是由核心(或其他進程)對某個進程的中斷"(《Linux核心原始碼情景分析》第三章)。非強制中斷的一種典型應用就是所謂的"下半部"(bottom half),它的得名來自於將硬體中斷處理分離成"上半部"和"下半部"
Time of Update: 2018-12-04
進程描述符中的state欄位描述了進程當前所處的狀態,它有一組標誌組成,每個標誌描述一種可能的進程狀態,這些狀態是互斥的,也就是說在同一時刻,只能設定一個狀態 一、運行狀態:TASK_RUNNING,進程要麼在CPU上運行,要麼準備執行二、可中斷的等待狀態:TASK_INTERRUPTIBLE,進程被掛起,直到收到某個訊息,喚醒該進程三、不可中斷的等待狀態:TASK_UNINTERRUPTIBLE
Time of Update: 2018-12-04
1、Linux下的時間 1.1、Linux下的時間系統 1.2、Linux下與時間有關的資料結構2、獲得目前時間3、延時4、定時器 4.1、alarm 4.2、setitimer1、Linux下的時間1.1、Linux下的時間系統 UNIX及Linux的時間系統是由"新紀元時間"Epoch(電腦時代開端)開始計算起,單位為秒,Epoch則是指定為1970年1月1日淩晨零點零分零秒,格林威治(GMT)時間。 目前大部份的UNIX系統都是用32位來記錄時間,正值表示為1970
Time of Update: 2018-12-04
最近在接觸核心方面的東西,遇見如下一段代碼:struct list_head { struct list_head *next, *prev; //雙向鏈表};#define LIST_HEAD_INIT(name) { &(name), &(name) } #define LIST_HEAD(name) \ struct list_head name = LIST_HEAD_INIT(name)#define
Time of Update: 2018-12-04
密碼編譯演算法: 對稱式加密演算法: DES、IDEA、RC2、RC4、AES、Skipjack ...... 非對稱式加密演算法: RSA、DSA、DiffieHellman、PKCS、PGP ...... 單向的HASH演算法屬於報文摘要演算法,雖然有些也出自OpenSSL庫。 命令操作: 1、產生普通私密金鑰:[weigw@TEST src]$ openssl genrsa -out privatekey.key 1024Generating RSA private
Time of Update: 2018-12-04
1,在自己的終端下grub-md5-crypt ,在出現的Passwd:提示時候輸入你的密碼(注意,在Linux下輸入密碼都是不顯示的),Retype password:時再次輸入密碼。我們這裡用123456來示範。[zyj@fedora13 ~]$ grub-md5-crypt Password: Retype password:
Time of Update: 2018-12-04
GNU的screen工具是一個很好的工具.如果需要經常或者大量的登入伺服器進行操作,screen或許還是一個不可或缺的好工具.本文主要想探討的主要問題是screen的配置指令碼中如何自由定製狀態列的內容.也即hardstatus的內容定製.本文所討論的問題,對於screen工具的使用來說,基本沒有什麼指導作用,甚至可以認為是一個很無聊的問題,所以如果你是想找如何入門使用screen的話,那麼,沒有必要繼續往下看了,可以參考網上很多同志的其他的介紹文檔.對於使用putty來串連伺服器的同志來說,一
Time of Update: 2018-12-04
root許可權登入後獲得/etc/shadow檔案之後文本開啟shadow 檔案:在linux系統中, /etc/shadow 檔案存放著使用者的密碼雜湊值。shadow中存放的密碼密文格式如下:$id$salt$encrypted其中id是指使用的雜湊演算法:可取如下值: ID | Method-------------------------- 1 | MD5 2a | Blowfish (not in mainline glibc; added in some
Time of Update: 2018-12-04
物聯網的發展,嵌入式節點具備3G無線上網功能是個必不可少的功能,奈何網上的資料多數以WCDMA為主,電信的evdo資料不是很多,筆者經過一番實驗,搜尋了一些網站,終於在開發板上,將EVDO模組(中興MC8630)成功撥接,現分享步驟如下:3G模組的速度非常快,所以普通的UART串口已經不能滿足速度,所以會通過晶片的USB口來進行資料互動。硬體串連這裡就忽略了,有興趣的朋友可以買個usb口的3G模組。在Linux下,我們首先要裁剪核心,是它支援usb功能,並且支援usb轉串口功能,因為Linux系
Time of Update: 2018-12-04
這真是一個蛋疼的錯誤! 筆者經曆過幾次這個錯誤,一直也沒有注意,知道後來經常遇到這個錯誤,覺得應該總結出來,引以為戒,同時也為各位同仁們,增加錯誤庫,提高解決問題的速度。 這個錯誤,查一下就知道是段錯誤,一般是指標出錯,或者內容益處,反正就是一些不正常操作,系統無法執行下去了,就會產生這個錯誤。 廢話,這誰都知道,但是要根據具體問題,具體分析,說的那麼虛,誰知道到底為什嗎? 我遇到過幾次這種錯誤,印象最深的就是兩次: 1.在select的時候:
Time of Update: 2018-12-04
由於項目中需要用到MD5演算法,於是在網上找了好幾個md5演算法的源碼檔案,結果介面各不相同,很是頭疼。翻翻Linux的/usr/include目錄,發現/usr/include/openssl/下提供了md5.h,於是寫了個小代碼測試了一下:#include <stdio.h>#include <openssl/md5.h>#include <assert.h>#include <string.h>void PrintHex(char*
Time of Update: 2018-12-04
今天遇見一個超鬱悶的BUG,現象非常奇怪:delete pointer; 刪除一個指標的時候程式發生core dump,或者在此處掛死。 從原理上分析,new出來的一塊記憶體,會在記憶體的頭或者尾處加上一個標記,說明塊記憶體的大小。 我猜想,一定是指標越界,導致了開始或者末尾的這塊標記被破壞,所以delete發生掛死。 檢查了若干次後,也沒發現指標越界的情況。 而且單獨寫了一個程式來故意破壞new出來的記憶體塊的開頭和結尾,結果指標越界的時候,程式立即core
Time of Update: 2018-12-04
在Linux系統中,一般通過tcpdump進行抓取網路包,通過Wireshark工具可以開啟分析網路包。在使用tcpdump一般是需要使用root使用者。 預設不帶任何參數:直接啟動tcpdump將監視第一個網路介面上所有流過的資料包。tcpdump 指定網卡進行抓包:如果不指定網卡,預設tcpdump只會監視第一個網路介面,一般是eth0,下面的例子都沒有指定網路介面。tcpdump -i eth0 指定指定主機抓包:tcpdump
Time of Update: 2018-12-04
Windows與Linux中的換行是不一樣的,已經遇到過好幾次問題了~批量建立使用者的時候,新使用者不能登入,因為我的文本是在Windows下產生的,換行是Windows格式,而Linux中使用newusers命令匯入到passwd檔案,是直接複製過去的~不能一行一行的改啊~呵呵,剛剛學到了一招。 字元檔案在兩個系統之間拷貝之後,可以使用dos2unix或者是unix2dos命令來轉換,會將兩個系統中不同的東西轉換到目標系統的格式。在Linux中輸入命令之後,會提示安裝~很小很簡單~
Time of Update: 2018-12-04
centos6.4測試管用Linux裡面,模擬器可以直接識別,使用adb也沒有限制,但是手機插上usb之後,adb並不識別,顯示的是問號解決方案:1.電腦連手機後lsusb命令獲得手機編號[root@localhost wulong]# lsusbBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root
Time of Update: 2018-12-04
#include <unistd.h>; #include <sys/types.h>; main () { pid_t pid; pid=fork(); if (pid < 0) printf("error in fork!"); else if (pid == 0) printf("i am the child process,
Time of Update: 2018-12-04
一篇非常不錯關於彙編編程的總結http://www.acsu.buffalo.edu/~charngda/x86assembly.html<understanding strict aliasing> 一篇不錯的關於C/C++中aliasing的分析http://cellperformance.beyond3d.com/articles/2006/06/understanding-strict-aliasing.html<linux slub分配器淺析>http:/