Android:tgid任务结构val
我有一个持续启动的守护进程,并在循环中执行“kill-9”,以便对特定用例进行压力测试。这个守护进程加载一个共享库,然后打开一个fd。(fd的打开/关闭在内核中处理的另一个共享库代码中)。我观察到,在内核库中执行清理操作时,它会在清理之前检查task_structs(tgid)中的PID值。 现在我观察到:我有时会看到,当守护进程被杀死时,我没有看到相关的tgid值,而是看到一个奇怪的进程ID值,它是“绑定进程”的一部分。因此,我在内核代码中的清理操作对于被“kill-9”杀死的进程ID无效 任何人都知道为什么当前->tgid值是绑定进程的值,而不是被杀死的守护进程的值。请注意,我的守护进程确实链接到“libbinder”。我不确定这是否能起作用。如果我从我的守护进程中删除到“libbinder”的链接及其相关代码,一切看起来都很好Android:tgid任务结构val,android,kernel,Android,Kernel,我有一个持续启动的守护进程,并在循环中执行“kill-9”,以便对特定用例进行压力测试。这个守护进程加载一个共享库,然后打开一个fd。(fd的打开/关闭在内核中处理的另一个共享库代码中)。我观察到,在内核库中执行清理操作时,它会在清理之前检查task_structs(tgid)中的PID值。 现在我观察到:我有时会看到,当守护进程被杀死时,我没有看到相关的tgid值,而是看到一个奇怪的进程ID值,它是“绑定进程”的一部分。因此,我在内核代码中的清理操作对于被“kill-9”杀死的进程ID无效 任
是否有任何建议/想法?如果您的用户空间进程打开一个文件,然后分叉另一个进程,则打开的文件将在分叉进程中复制(很可能此
libbinder
正在分叉另一个进程)
内核中file\u操作
struct的close方法只有在最后一次引用文件时才会被调用。如果两个进程几乎同时死亡,那么最终调用close方法的进程将是第二个死亡的进程
内核代码不应键入
tgid
。它应该将清理操作所需的数据附加到结构文件
,而不是到任务结构
,此信息肯定很有用。谢谢你的回答