列出所有程序
1 #include 2 #include 3 #include 4 #include 5 #include 6view code7static __init int print_pid(void)8
20 printk("
the number of process is:%d\n
",count);
21return0;
22}2324
static __exit void print_exit(void)25
28module_init(print_pid);
29 module_exit(print_exit);
獲得虛擬位址的物理記憶體
1/*2view code3*偽**,示例45
*32位位址,**對映(沒有pud_t),頁面大小4kb67
*/89 unsigned long addr = 0x12345678;//
要找的虛擬位址,使用者空間所訪問的位址
1011 unsigned long real_addr = 0x00;//
要輸出的位址
1213
struct task_struct *cur_task = get_current();//
獲取當前程序控制塊
1415
struct mm_struct *mm = cur_task -> mm;//
程序虛擬空間
1617 pgd_t *pgd;//
描述頁全域性目錄項
1819 pmd_t *pmd;//
描述頁中間項
2021 pte_t *pte;//
頁表項22
2324
25 pgd = pgd_offset(mm, addr);//
找出所在目錄
2627
if (pgd_none(*pgd))
3233 pmd = pmd_offset(pgd, addr);//
找出所在中間項
3435
3637
if (pmd_none(*pmd))
4243 pte = pte_offset(pmd, addr);//
找出所在頁面
4445
4647
4849
if (pte_none(*pte))
5455
5657
//假設每頁4kb
5859 real_addr = addr & 0x00003fff; //
取出頁面偏移量
6061 real_addr += pte;//
核心空間訪問的位址
6263 real_addr -= page_offset;//
真正實體地址()
6465 printk("
實體地址是 %x\n
",real_addr);
6667
return;68
6970
71out:72
73 printk("
沒有記憶體對映
",real_addr);
Linux 獲取程序管理
實驗環境 vmware workstation pro下linux red hat 核心版本 2.6.32 1.通過vim編寫程式 首先程式需要包含所需要的標頭檔案。sys types.h資料結構pid t在此構造 sys wait.h函式wait在內定義 sys time.h和sys resour...
程式中獲取Shell程序環境變數值
程式中獲取shell程序環境變數值 1.get all 程序的環境是乙個以null字元結尾的字串之集合。如 name something linux系統提供了environ指標來訪問其變數內容。如下程式showenv.c演示了通過environ指標變數訪問環境變數 extern char envir...
Linux下獲取程序狀態
1 在 proc目錄下包含了一些以數字命名的子目錄,這些目錄就是系統當前執行程序的proc抽象。每乙個目錄都以相關聯的活動系統程序pid為目錄名,在裡面包含了一些檔案,用於顯示程序相關資訊。每建立乙個程序都會在 proc下生成乙個以該程序pi d為名的目錄 2 在 proc下,還有乙個目錄 proc...