c - 如何检查进程是否是我的后代(内核模式)

标签 c linux-kernel kernel system-calls

假设我处于内核模式,我尝试知道带有 PID 的进程是否是我的后代。

有没有一个函数可以检查它?或者我应该创建一个像这样的函数:

PSEUDO CODE:

my_process = get_current(); 
target_process = find_task_by_vpid(PID); 
while (target_process != NULL && target_process != my_process)
   target_process = target_process->parent;
if(target_process!=) //meaning he is one of my kids
    return YES_HE_IS_YOUR_KID;
else
    return NO_HE_IS_YOUR_KID;

最佳答案

据我所知,没有内置函数可以确定给定的 pid 是否是当前进程的后代。您应该手动编写该函数。正如您所演示的,它相当简单,并且长度不到 10 行。

注意。 有时在内核中,没有当前进程。例如在中断上下文中。所以你需要非常小心地行事。

关于c - 如何检查进程是否是我的后代(内核模式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33894657/

相关文章:

c - 写入硬件 Controller 寄存器和 DMA 如何在 ARM arch 机器上工作?

c - 循环内定义的局部变量

c - 没有任何内容写入文件

c - 如何在 C 中将 char* 拆分为子字符串?

c - 'passing file descriptors between processes' 是如何工作的?

c - 如何检查 struct timer_list 是否过期?

Linux 页面缓存 - 从内核中的页面缓存中删除页面

linux - 有没有办法将文件描述符传递给另一个进程?

检查并加载内核模块

c - 如何创建一个改变枚举器默认值的函数?