4
A
回答
13
struct task_struct包含成員稱爲comm,它包含executable name excluding path
。
獲取current macro from this file會得到啓動當前進程的程序的名稱(如在insmod/modprobe中)。
使用上述信息,您可以使用獲取名稱信息。
0
不確定,但find_task_by_pid_ns可能是有用的。
0
你可以看看的特殊文件/proc/<pid>/
例如,/proc/<pid>/exe
是指向實際的二進制符號鏈接。
/proc/<pid>/cmdline
是命令行的空分隔列表,所以第一個單詞是進程名稱。
1
我的內核模塊加載「modprobe -v my_module --allow-unsupported -o some-data」,並提取「some-data」參數。下面的代碼給我的整個命令行,這裏是我如何解析出感興趣的參數:
struct mm_struct *mm;
unsigned char x, cmdlen;
mm = get_task_mm(current);
down_read(&mm->mmap_sem);
cmdlen = mm->arg_end - mm->arg_start;
for(x=0; x<cmdlen; x++) {
if(*(unsigned char *)(mm->arg_start + x) == '-' && *(unsigned char *)(mm->arg_start + (x+1)) == 'o') {
break;
}
}
up_read(&mm->mmap_sem);
if(x == cmdlen) {
printk(KERN_ERR "inject: ERROR - no target specified\n");
return -EINVAL;
}
strcpy(target,(unsigned char *)(mm->arg_start + (x+3)));
「目標」持有-o參數後的字符串。您可以稍微壓縮一下 - 調用者(在本例中爲modprobe)將成爲mm-> arg_start中的第一個字符串,以滿足您的需求。
相關問題
- 1. 從內核linux中獲取pid的完整進程路徑
- 2. 在編寫Linux內核模塊時獲取用戶進程pid
- 3. Linux中的pid進程名稱
- 4. linux - 獲取進程的pid
- 5. 通過PID獲取進程名稱
- 6. 從PID獲取名稱?
- 7. 如何從linux中的pid獲取進程的路徑或名稱
- 8. 在linux的內核空間中獲取進程ID的名字
- 9. 如何從C++中的PID獲取進程名稱?
- 10. 如何從PID使用C獲取進程名稱
- 11. 如何使用PID從服務器層獲取進程名稱
- 12. 從pid或句柄獲取進程名稱
- 13. 從子進程獲取PID
- 14. 獲取模塊名稱和進程名稱在LINUX C++
- 15. 從進程名稱獲取進程ID
- 16. 通過他的PID分析一個進程Linux內核編程
- 17. 在Linux內核(模塊編程)中如何從多線程進程獲取threadids?
- 18. 從Linux內核空間獲取進程列表
- 19. 獲取java進程的名稱而不是pid?
- 20. 如何獲取Linux內核的構建器名稱
- 21. 如何在Linux內核編程中從'dev_t'獲取'device struct'?
- 22. 在zsh中獲取進程的pid
- 23. 在運行時從linux內核模塊獲取內核版本
- 24. Linux內核進程管理
- 25. linux內核進程簿
- 26. 從Linux內核映像獲取配置
- 27. SharpPcap獲取進程名稱
- 28. 從進程名稱獲取應用程序名稱
- 29. 如何從進程名稱獲取應用程序名稱?
- 30. 獲取linux中的最後一個(最新)進程pid
我相信Malesh N.希望能夠從內核代碼中做到這一點。 – craig65535 2015-05-12 17:06:07
這個_can_可以通過使用'filp_open',@ craig65535 – Quaker 2017-09-14 13:22:02