美文网首页
类进程守护(fork)

类进程守护(fork)

作者: 同一错误不能犯两次 | 来源:发表于2016-07-08 13:39 被阅读49次

注意:fork类进程守护只适合大部分4.3之前系统

这里需要解释下为什么4.3之前可行,之后不可行
在源码activitymanagerservice中

4.3之前代码为:

Process.killProcessQuiet(pid);

4.3之后代码为:

 Process.killProcessQuiet(app.pid);
 Process.killProcessGroup(app.info.uid, app.pid);

由于4.3之后谷歌管理进程通过了组的方式,fork出来的进程都会被分到一个组中,所以增加了killProcessGroup代码,杀掉当前组中的所有进程。


fork分析

参考链接:Linux中fork()函数详解

C代码

#include <jni.h>
#include <string.h>
#include <JNIDemo.h>
#include <android/log.h>
#include <unistd.h>


#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, TAG, fmt, ##args)//打印android日志
static char TAG[] = "Native.init"; //日志tag

jint Java_com_demo_ndk_so_JNIDemo_whileFork(JNIEnv * env, jobject thiz) {
int pid = fork();
if (0 == pid) //我是子进程
        {
    while (1) {
        //在这里面实现需要的逻辑,在android4.3之前的系统,程序关闭过后子进程不会被kill掉
        LOGD("儿子正在循环/n");
        sleep(1);
    }
} else if (0 > pid) //错误的fork
        {
    LOGD("error in fork!");
} else { //我是父进程
    LOGD("我是孩子他爹/n");
}
return 0;
}

JAVA代码

package com.demo.ndk.so;

public class JNIDemo {
static{
    System.loadLibrary("JNIDemo");
}
public static native int whileFork();
}

相关文章

  • 类进程守护(fork)

    注意:fork类进程守护只适合大部分4.3之前系统 这里需要解释下为什么4.3之前可行,之后不可行在源码activ...

  • Android系统启动

    所有的进程都是init进程的子进程或孙进程。是init进程fork出子进程 fork:fork函数UNIX及类UN...

  • 【Python入门】21.进程编程之 multiprocessi

    摘要:多进程编程;fork( )的介绍;multiprocess模块;Process类;Pool类;subproc...

  • 什么是守护进程?它在iOS里的作用是什么?

    什么是守护进程? 守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程...

  • 系统编程--进程函数

    一、fork() 拷贝父进程,子进程的fork不执行,返回0,执行fork之后的所有代码父进程的fork返回子进程...

  • Python多进程

    一、fork模块 二、 multiprocessing模块中的Process类 三、进程池Pool 四、进程间的通...

  • fork()系统调用

    fork() 函数简介 fork系统调用用于创建一个新进程,称为子进程,它与进行fork()调用的进程(父进程)并...

  • python多进程学习笔记

    fork方式创建进程 简单的fork 主进程fork时返回值大于0,子进程fork时返回值等于0 os.getpi...

  • 进程相关fork()/exec()/wait()

    fork() fork()将父进程复制一份子进程, 在子进程中从fork()调用处继续执行, 之后的代码在父子进程...

  • Ceph守护进程实现

    以Ceph Monitor的守护进程实现为例,源码文件:src/ceph_mon.cc Ceph对系统的fork调...

网友评论

      本文标题:类进程守护(fork)

      本文链接:https://www.haomeiwen.com/subject/esfrjttx.html