Android:捕获SIGSEGV信号JNI

| 我正在使用tesseract项目将图像转换为字符串。 但是,SIGSEGV信号是从JNI发送的(随机?)。 我想在信号发送后重新启动我的应用程序,但是我没有找到使用Java“捕获”信号的任何解决方案。 有人有建议吗? 谢谢     
已邀请:
虽然您可以使用本机信号处理程序来捕获SIGSEGV,但是从处理程序内部进行android api交互方面,做任何有用的事情可能都不容易。 最好的办法可能是了解并解决问题。 就解决方法而言-这确实是一个非常次等的解决方案-大概可以在将来使用AlarmManager设置事件几秒钟,然后取消该事件/将其进一步推送(如果后来发现仍在运行) “风险”操作。或者您可以启动一项服务(不在同一进程中运行),如果服务连接丢失,该服务将重新启动您的应用程序。     
由于没有人在帮助。我想指出一个事实,对目的或目标提出质疑是无礼的。我们想要的是事实,而不是观点或猜测。这似乎是一种习惯。就我而言,我想捕获SIGSERV,因为我想检测共享库中的漏洞。出于安全原因,如果没有受欢迎的误报,没有其他确定的方法可以检测到该漏洞。这是我几天前发现的东西:
> #include <stdio.h>
> #include <stdlib.h>
> #include <dlfcn.h>
> 
> 
> int main(int argc, char **argv) {
>     void *handle;
>     void* (*doSomething)(char);
>     char *error;
>     handle = dlopen (\"libexample.so\", RTLD_LAZY);
>     if (!handle) {
>         fprintf (stderr, \"%s\\n\", dlerror());
>         exit(1);
>     }
>     dlerror();    /* Clear any existing error */
>     foo = dlsym(handle, \"doSomething\");
>     if ((error = dlerror()) != NULL)  {
>         fprintf (stderr, \"%s\\n\", error);
>         exit(1);
>     }
>     printf (\"%f\\n\", (*setDataSource)(\"/data/data/com.example.ap/files/cve_2015_2396.mp4\"));
>     dlclose(handle);
>     return 0;
    

要回复问题请先登录注册