我正在使用嵌入式linux。 我需要從內核空間(內核模塊)向某個用戶空間進程發送一個信號。 由於PID是動態的,我需要獲得此進程的pid才能向其發送信號? 它如何從內核空間的名稱獲取進程的PID?在linux的內核空間中獲取進程ID的名字
2
A
回答
3
對於用戶空間中的每個用戶進程有一個相關的task_struct(這是一個循環鏈表)在內核space.Which擁有所有的工藝細節,所以,你可以步行穿過這一點,檢查你的進程名。
寫下例如
for_each_process(task) {
/* compare your process name with each of the task struct process name*/
if ((strcmp(task->comm,your_process_name) == 0)) {
/* if matched that is your user process PID */
process_id = task->pid;
}
}
2
過程不一定有的名稱。一個正在運行的程序可能已經改變了它的名字,所以你的計劃只有在你試圖找到的進程是協作和良好行爲的情況下才有效。嘗試以例如下面和(從不同的終端)RUN PS運行該程序:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
int pid,rc;
char *args[] = { "", "-", NULL };
pid = fork();
if (pid) {
sleep(60);
}
else {
execve("/bin/cat" , args, NULL);
}
return 0;
}
相關問題
- 1. 從Linux內核空間獲取進程列表
- 2. linux在內核中從pid獲取進程名稱
- 3. 在linux內核(內核空間)中檢索會話Id
- 4. 獲取Linux內核中另一個進程的進程CPU時間時鐘
- 5. 在solaris內核模塊中獲取進程ID和父進程
- 6. 如何在linux中通過進程名獲取進程ID
- 7. 如何從Linux內核空間獲取用戶名
- 8. 在Linux內核空間執行程序
- 9. 獲取所有進程id進程名在linux
- 10. 從內核linux中獲取pid的完整進程路徑
- 11. Linux內核空間和用戶空間
- 12. 在編寫Linux內核模塊時獲取用戶進程pid
- 13. 取在內核空間
- 14. 在linux內核空間獲得最大支持的CPU頻率
- 15. Linux內核進程管理
- 16. linux內核進程簿
- 17. 內核驅動程序從進程ID讀取進程內存
- 18. 在內核調試中訪問進程的內核堆棧給定進程ID
- 19. 的Linux用戶空間線程,內核線程,輕量級進程
- 20. linux內核的內核地址空間的佈局是什麼?
- 21. Linux內核模塊中的內核線程之間的通信
- 22. 在Linux內核(模塊編程)中如何從多線程進程獲取threadids?
- 23. 從進程名稱獲取進程ID
- 24. - linux中的第一個內核空間驅動程序
- 25. 內存分配內核空間和用戶空間進程
- 26. 在用戶空間和內核空間上執行進程
- 27. Linux內核:從內核空間調用用戶空間的回調函數
- 28. 如何在內核空間獲取文件的元數據 - linux 3.5
- 29. 如何從內核空間獲取sockfd?
- 30. 在Linux內核命名空間上運行Python腳本