android,JNI创建进程,使用fork()
long add(long x,long y)
{
pid_t fpid; //fpid表示fork函数返回的值
int count=0;
fpid=fork();
if (fpid < 0)
LOGI("error in fork!");
else if (fpid == 0) {
LOGI("i am the child process, my process id is %d/n",getpid());
count++;
return x;
}
else {
LOGI("i am the parent process, my process id is %d/n",getpid());
count++;
return y;
}
}
JNI调用native 方法 add函数
父进程输出了打印信息,子进程没有反应。
父进程pid 17247
DDMS中查看Threads,
TID Status utime stime Name
17247 Native 19 12 main
adb shell ps命令查看
USER PID PPID VSZ RSS STAT NAME
root 152 1 S zygote
u0_a66 17247 152 297120 44096 S com.example.jni
u0_a66 17520 17247 0 0 Z com.example.jni
貌似android的应用程序进程都由zygote进程创建
子进程确实创建了,但是没有运行,占用的内存为0(VZS,RSS),处于僵尸状态。
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
说明android应该不支持在JNI的native方法中创建进程,因为一个进程应该运行在一个虚拟机上,在这里如何能实现虚拟机的机制。
android,JNI创建进程,使用fork()的更多相关文章
- linux创建进程fork的方法步骤
fork创建进程 函数原型如下 #include// 必须引入头文件,使用fork函数的时候,必须包含这个头文件,否则,系统找不到fork函数 pid_t fork(void); //void代表没有 ...
- Android虚拟机器学习总结Dalvik虚拟机创建进程和线程分析
Dalvik调用一个成员函数时,虚拟机,假设发现,该成员函数是一个JNI办法,然后,它会直接跳转到其地址来运行.也就是说.JNI方法是直接在本地操作系统上运行的.而不是由Dalvik虚拟机解释器运行. ...
- linux中fork创建进程讲解(转)
大家知道Linux中创建子进程的一个很好的方法是函数调用fork,但是很多初学者对fork的理解上可能有点困难.我们举个例子来看看fork的用法吧. 大家用fork的时候记住fork是 ...
- inux的进程-进程的概念和fork创建进程
一. 什么是进程? 初学者,可能认为程序或者一段代码就是一个进程.其实这样说是很不全面的,进程简单的说就是一个个条件. 1.需要一个代码 2.需要运行这个代码环境和资源 从下面的一段代码,我们来分析 ...
- C语言 进程控制---创建进程fork()函数
#include "sys/types.h" #include "stdio.h" #include "stdlib.h" #include ...
- linux 进程创建clone、fork与vfork
目录: 1.clone.fork与vfork介绍 2.fork说明 3.vfork说明 4.clone说明5.fork,vfork,clone的区别 内容: 1.clone.fork与vfork介绍 ...
- 创建一个新的进程os.fork
import os pid = os.fork()功能:创建新的进程参数:无返回值:失败返回一个负数 成功:在原有进程中返回一个新的进程的PID号 在新的进程中返回0 *子进程会复制父进程全部代码段, ...
- Android应用程序进程启动过程的源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创 ...
- [ 转载 ] Android JNI(一)——NDK与JNI基础
Android JNI(一)——NDK与JNI基础 隔壁老李头 关注 4.4 2018.05.09 17:15* 字数 5481 阅读 11468评论 8喜欢 140 本系列文章如下: Androi ...
随机推荐
- 测试-Animator的“当前剪辑CurrentAnimatorStateInfo”
左边是Transport到Idle,右边是完全到Idle 当进入过渡时,事实上Transport状态并未结束,通过下面打印出来的hash可以看出还是Transport的状态 过渡结束才正式变为Idle ...
- linux设备驱动编写_tasklet机制
在编写设备驱动时, tasklet 机制是一种比较常见的机制,通常用于减少中断处理的时间,将本应该是在中断服务程序中完成的任务转化成软中断完成. 为了最大程度的避免中断处理时间过长而导致中断丢失,有时 ...
- sudo详解
一. sudo的特点 sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取root权限.同时,它还要兼顾易用性,让系统管理员能够更有效,更方便地使用它.sudo设计者的宗旨是:给用 ...
- Python 2.7.9 Demo - ini文件的读、写
ini文件 [weixin_info] hello = Nick Huang #coding=utf-8 #!/usr/bin/python import ConfigParser; cp = Con ...
- Mysql任务调度
Mysql任务调度 Event调度配置 Mysql任务调度Event不执行 Mysql任务作业Event不执行 我采用的方法就是: 方法一:找到当前使用的 .cnf 文件,在 [mysqld] 的下面 ...
- 利用jdbc处理oracle大数据---大文件和二进制文件
一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...
- BZOJ 3550 Vacation(最小费用最大流)
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3550 题意:给出3×n个数字,从中选出一些数字,要求每连续的n个数字中选出的数字个 ...
- DbUtils使用时抛出Cannot get a connection
java.sql.SQLException: Cannot get a connection, pool error Timeout waiting for idle object Caused by ...
- shell 随机从文件中抽取若干行
shuf -n5 main.txt sort -R main.txt | head -5 awk -vN=5 -vC="`wc -l file`" 'BEGIN{srand();w ...
- SQL语句最基本的性能优化方法
有些人还不知道sql语句的基本性能优化方法,在此我简单提醒一下,最基本的优化方法: 1.检查是否缺少索引.调试的时候开启“包括实际的执行计划” 执行后会显示缺少的索引, 然后让dba帮助添 ...