我正在练习制作设备驱动程序。
我的目标是获取当前任务的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。
答案 0 :(得分:0)
您尚未指定是否使用IDE来编写和执行代码。 如果您正在使用它
grand parent task
是IDE(在你关闭并重新打开之前它是不变的。
parent task id
- 执行程序时,程序由IDE创建的进程调用,每次运行程序时都会被IDE创建的新进程调用。
(当程序终止时,IDE创建的调用进程也会终止)。
current pid
是您的流程ID
进程ID由os。按增量顺序分配。