AMS 启动的时候杀掉所有进程
来源:互联网 发布:在线订单管理系统源码 编辑:程序博客网 时间:2024/05/21 08:37
有时候分析 Android log 的时候发现几乎所有进程都 die 了,那基本判定 AMS 重启了。
AMS 代码:http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
AMS 通过 SystemServer 启动,在其代码 start 中有如下部分:
private void start() { Process.removeAllProcessGroups();
xxxxxx
}
看到 Process.removeAllProcessGroups() 就是杀所有进程的,这个函数是native继续跟下去,在 android_util_Process.cpp中:
void android_os_Process_removeAllProcessGroups(JNIEnv* env, jobject clazz){ return removeAllProcessGroups();}static const JNINativeMethod methods[] = {........... {"killProcessGroup", "(II)I", (void*)android_os_Process_killProcessGroup},...........};
继续跟踪代码到 system/core/libprocessgroup/processgroup.cpp 中:
void removeAllProcessGroups(){ SLOGV("removeAllProcessGroups()"); DIR *root = opendir(PROCESSGROUP_CGROUP_PATH); if (root == NULL) { SLOGE("failed to open %s: %s", PROCESSGROUP_CGROUP_PATH, strerror(errno)); } else { struct dirent cur; struct dirent *dir; while ((readdir_r(root, &cur, &dir) == 0) && dir) { char path[PROCESSGROUP_MAX_PATH_LEN]; if (dir->d_type != DT_DIR) { continue; } if (strncmp(dir->d_name, PROCESSGROUP_UID_PREFIX, strlen(PROCESSGROUP_UID_PREFIX))) { continue; } snprintf(path, sizeof(path), "%s/%s", PROCESSGROUP_CGROUP_PATH, dir->d_name); removeUidProcessGroups(path); SLOGV("removing %s\n", path); rmdir(path); } closedir(root); }}这里会把 /acct 目录下所有 uid_ 开头的进程都干掉。
阅读全文
0 0
- AMS 启动的时候杀掉所有进程
- 快速杀掉apache的所有进程
- 杀掉所有Oracle的用户进程
- kill -9 杀掉oracle所有进程却不能启动和连接数据库的解决办法!
- 杀掉所有进程
- 杀掉所有newlisp进程
- C#实现杀掉MSSQL中数据库当前连接的所有进程(进行数据还原的时候需要用到)
- 一次性杀掉所有由“opensips”用户产生的进程。
- 杀掉死锁的进程
- linux下怎么杀掉所有子进程
- windows环境杀掉所有tomcat进程
- 查看服务是否启动以及杀掉进程,再启动进程的小技巧
- golang使用execCommand调用的时候子进程如何杀掉处理方法
- upstart启动的进程调用stop命令会杀掉其内部启动的service的问题
- Jenkins启动项目后台进程自动杀掉
- Android ActivityManagerService(AMS)的进程管理
- Android ActivityManagerService(AMS)的进程管理
- 主进程退出的时候,杀死所有子进程
- CSS学习笔记(五):居中显示
- 一些简称(持续更新)
- Educational Codeforces Round 32 题解
- 拷贝函数
- IOS11的新功能你发现了没有~~~
- AMS 启动的时候杀掉所有进程
- C语言 异步回调
- Git常用命令
- Layout run failed错误解决方案
- SharedPreferences 存储实体类
- 漫画人物脚的结构与画法
- 阿里云在美推出MaxCompute大数据计算平台
- AVL树->图解1
- spark1.5.2 spark-shell报错:java.util.concurrent.RejectedExecutionException