Linux獲取程序中變數

2021-07-09 07:57:19 字數 1612 閱讀 5074

列出所有程序

1 #include 2 #include 3 #include 4 #include 5 #include 6

7static __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);

view code

獲得虛擬位址的物理記憶體

1/*2

3*偽**,示例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);

view code

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...