libcore.io.ErrnoException: kill failed: ESRCH (No such process)

这个问题遇到不止一次,记下解决方法备忘。 
运行稳定性脚本时框架崩溃,打印的堆栈信息如下: 
libcore.io.ErrnoException: kill failed: ESRCH (No such process)
at libcore.io.Posix.kill(Native Method)
at libcore.io.ForwardingOs.kill(ForwardingOs.java:77)
at java.lang.ProcessManager$ProcessImpl.destroy(ProcessManager.java:257)
at sogou.test.agent.framework.sysinfo.CMDExecute.run(CMDExecute.java:29)

查看了异常发生的位置CMDExecute.java:29,是: 
            if(process!=null){
             process.destroy();
            } 

发生崩溃的原因log里说的很清楚,就是被destroy的进程已经不存在了。 

解决方案: 
将  
            if(process!=null){
             process.destroy();
            } 
换成  
   try { 
            if (process != null) { 
                // use exitValue() to determine if process is still running.  
                process.exitValue(); 
            } 
        } catch (IllegalThreadStateException e) { 
            // process is still running, kill it. 
            process.destroy(); 
        }  
 exitValue()函数采用非阻塞的方式返回,如果没有立即拿到返回值,则抛出异常。

参考:https://groups.google.com/forum/#!topic/android-developers/VcjXWBosQ88 

http://leonmau.iteye.com/blog/1174000 
————————————————
版权声明:本文为CSDN博主「mingzhu_ustc」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010037124/article/details/38468697

发布了36 篇原创文章 · 获赞 162 · 访问量 62万+

猜你喜欢

转载自blog.csdn.net/qq_19004627/article/details/103911226