android,JNI创建进程,使用fork()
16lz
2021-01-25
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命令查看
USERPID 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方法中创建进程,因为一个进程应该运行在一个虚拟机上,在这里如何能实现虚拟机的机制。
更多相关文章
- 一款霸榜 GitHub 的开源 Linux 资源监视器!
- Android(安卓)wifi连接
- Android的RIL驱动模块telephony启动流程
- 【Android】进程通信IPC——Messenger
- 备忘---Android(安卓)Permission
- Android模块化编程——WebView使用之系统返回键设置
- Android(安卓)opencv人脸识别
- 在Android中获取系统正在运行的进程方法
- 如何使用好android的可访问性服务(Accessibility Services)