(内核简单编程)我想知道为什么像这样显示pids

时间:2016-10-02 07:29:40

标签: c linux kernel

我正在练习制作设备驱动程序。

我的目标是获取当前任务的pid和父任务的pid。

此外,我得到了盛大(父母的父母)任务的pid。

这是源代码。

struct task_struct * current_task = current;
struct task_struct * parent_task = current_task->parent;

printk("current pid : %d, current_task->pid);
printk("parent task pid : %d\n", parent_task->pid);
printk("grand pid : %d\n", parent_task->parent->pid);

这是结果.. (我跑了3次。)

  

目前的pid:2850   父任务pid:2846   祖父母任务:1692

     

目前的pid:2872   父任务pid:2864   祖父母任务:1692

     

目前的pid:2891   父任务pid:2887   祖父母任务:1692

     

祖父母任务的pid总是1692。

目前的一个和父母的一个正在增加。 我只是想知道为什么...... 如果有人回答我会有所帮助.. 谢谢你的阅读。

1 个答案:

答案 0 :(得分:0)

您尚未指定是否使用IDE来编写和执行代码。 如果您正在使用它

grand parent task是IDE(在你关闭并重新打开之前它是不变的。

parent task id - 执行程序时,程序由IDE创建的进程调用,每次运行程序时都会被IDE创建的新进程调用。 (当程序终止时,IDE创建的调用进程也会终止)。 current pid是您的流程ID

进程ID由os。按增量顺序分配。