我正在使用嵌入式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脚本