如何在 Android NDK 中获取我的进程 id (PID)?

问题描述 投票:0回答:2

如何在 Android NDK 中获取我的进程 id (PID)?

jclass proc_Cls = env->FindClass("android/os/Process");
jmethodID proc_id = env->GetMethodID(proc_Cls, "myPid", "()I");
jint prcId = env->CallIntMethod(proc_Cls, proc_id);

此代码不起作用。

android android-ndk
2个回答
5
投票

由于进程 ID 是操作系统级标识符,因此在 C 或 C++ 中从操作系统发现它比尝试通过“反向”JNI 从 Android 堆栈获取它更有意义。

获取进程ID的posix函数是

pid_t getpid(void);

要使用它,您必须先

#include <sys/types.h>
#include <unistd.h>

由于它是一个 posix 函数,它不仅应该在 Linux 内核之上工作,而且还可以在 Android 可能被移植运行的任何东西之上工作。如果存在可移植性问题,那就是想知道 PID/假设这是有意义的。


0
投票
jclass process = env->FindClass("android/os/Process");
jmethodID my_pid_id = env->GetStaticMethodID(process, "myPid", "()I");
int pid = env->CallStaticIntMethod(process, my_pid_id);
© www.soinside.com 2019 - 2024. All rights reserved.