[英]Task owner pid in a Linux kernel module when executed in swapper
給定一個任務實例具有pid 0和comm“ swapper / 0”,如何獲取所有者pid?
==編輯==
使用Netfilter掛鈎會發生這種情況。
在操作系統Unix中,當另一個進程執行fork()系統調用時,將創建除進程0(交換程序)以外的每個進程。 調用fork的進程是父進程,而新創建的進程是子進程。 每個進程(進程0除外)都有一個父進程,但可以有許多子進程。
操作系統內核通過其進程標識符來標識每個進程。 進程0是在系統啟動時創建的特殊進程。 分叉子進程(進程1)后,進程0成為交換進程(有時也稱為“空閑任務”)。 進程1(稱為init)是系統中所有其他進程的始祖。
如果數據包是UDP,則netfilter傳出鈎子上下文中的current
任務將始終具有TGID(用戶空間中的PID)。
對於SYN TCP數據包, current
任務將具有TGID,但ACK數據包將沒有。 要檢索TGID,您必須使用數據包長度從SYN數據包計算套接字順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.