Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:tgid任务结构val_Android_Kernel - Fatal编程技术网

Android:tgid任务结构val

Android:tgid任务结构val,android,kernel,Android,Kernel,我有一个持续启动的守护进程,并在循环中执行“kill-9”,以便对特定用例进行压力测试。这个守护进程加载一个共享库,然后打开一个fd。(fd的打开/关闭在内核中处理的另一个共享库代码中)。我观察到,在内核库中执行清理操作时,它会在清理之前检查task_structs(tgid)中的PID值。 现在我观察到:我有时会看到,当守护进程被杀死时,我没有看到相关的tgid值,而是看到一个奇怪的进程ID值,它是“绑定进程”的一部分。因此,我在内核代码中的清理操作对于被“kill-9”杀死的进程ID无效 任

我有一个持续启动的守护进程,并在循环中执行“kill-9”,以便对特定用例进行压力测试。这个守护进程加载一个共享库,然后打开一个fd。(fd的打开/关闭在内核中处理的另一个共享库代码中)。我观察到,在内核库中执行清理操作时,它会在清理之前检查task_structs(tgid)中的PID值。 现在我观察到:我有时会看到,当守护进程被杀死时,我没有看到相关的tgid值,而是看到一个奇怪的进程ID值,它是“绑定进程”的一部分。因此,我在内核代码中的清理操作对于被“kill-9”杀死的进程ID无效

任何人都知道为什么当前->tgid值是绑定进程的值,而不是被杀死的守护进程的值。请注意,我的守护进程确实链接到“libbinder”。我不确定这是否能起作用。如果我从我的守护进程中删除到“libbinder”的链接及其相关代码,一切看起来都很好


是否有任何建议/想法?

如果您的用户空间进程打开一个文件,然后分叉另一个进程,则打开的文件将在分叉进程中复制(很可能此
libbinder
正在分叉另一个进程)

内核中
file\u操作
struct的close方法只有在最后一次引用文件时才会被调用。如果两个进程几乎同时死亡,那么最终调用close方法的进程将是第二个死亡的进程


内核代码不应键入
tgid
。它应该将清理操作所需的数据附加到
结构文件
而不是
任务结构

,此信息肯定很有用。谢谢你的回答