【问题标题】:Getting PID from sk_buff and inode in Linux Kernel从 Linux 内核中的 sk_buff 和 inode 获取 PID
【发布时间】:2015-05-04 16:12:51
【问题描述】:

在 Linux 内核中,我们在网络堆栈中有一个 sk_buff 结构,我们从该结构中获取 inode,并从该 inode 中获取创建该 inode 的进程的 pid。 sk_buff中有一个pid字段,但总是设置为0。

内核内部有什么方法可以从inode知道pid吗?

【问题讨论】:

标签: c linux networking kernel


【解决方案1】:

您可以使用 skb 读取 PID

skb->sk->socket->file->f_owner->pid

对于一些较旧的内核版本,您可以将 PID 读取为

skb->sk->socket->file->f_owner

【讨论】:

  • 虽然技术上不会给你套接字的 PID 所有者,而不是创建 skbuff 的进程的 PID?例如如果进程A创建套接字,那么exec的进程B写入套接字,我认为结果将是A。
猜你喜欢
  • 2010-10-10
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 2019-06-08
  • 2021-04-30
  • 2010-12-17
  • 2021-08-26
相关资源
最近更新 更多