0

给定一个具有 pid 0 和 comm "swapper/0" 的任务实例,如何获取所有者 pid?

==编辑==

这使用 Netfilter 钩子发生。

4

2 回答 2

0

在操作系统 Unix 中,除了进程 0(交换器)之外的每个进程都是在另一个进程执行 fork() 系统调用时创建的。调用fork的进程是父进程,新创建的进程是子进程。每个进程(进程 0 除外)都有一个父进程,但可以有许多子进程。

操作系统内核通过进程标识符来识别每个进程。进程0是系统启动时创建的特殊进程;在 fork 一个子进程(进程 1)之后,进程 0 成为交换进程(有时也称为“空闲任务”)。进程 1,称为 init,是系统中所有其他进程的祖先。

于 2013-02-21T19:48:06.323 回答
0

如果数据包是 UDP,netfilter 传出挂钩上下文中的current任务将始终具有 TGID(用户空间中的 PID)。

对于 SYN TCP 数据包,current任务将具有 TGID,但 ACK 数据包将没有它。要检索 TGID,您必须使用数据包长度从 SYN 数据包中计算套接字序列。

于 2013-02-27T19:28:39.397 回答