加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在ThreadInterrupted的情况下提取进程的退出代码

发布时间:2020-12-15 08:40:49 所属栏目:Java 来源:网络整理
导读:我刚刚通过exec()调用创建了一个进程,我现在正在使用它 它的.waitFor()方法.我需要捕获InterruptedException,但我是 不知道我应该在catch代码块中放置什么. 我想收到退出代码,但如果当前线程我不会 被打断了.我该怎么做才能让退出代码退出流程 如果线程中断
我刚刚通过exec()调用创建了一个进程,我现在正在使用它
它的.waitFor()方法.我需要捕获InterruptedException,但我是
不知道我应该在catch代码块中放置什么.
我想收到退出代码,但如果当前线程我不会
被打断了.我该怎么做才能让退出代码退出流程
如果线程中断?

例:

import java.io.IOException;


public class Exectest {
public static void main(String args[]){
      int exitval;

      try {
        Process p = Runtime.getRuntime().exec("ls -la ~/");
        exitval = p.waitFor();
        System.out.println(exitval);
    } catch (IOException e) {
        //Call failed,notify user.
    } catch (InterruptedException e) {
        //waitFor() didn't complete. I still want to get the exit val. 
        e.printStackTrace();
    }

}
}

解决方法

如果我是你,我会把它放到catch块中:

p.destroy();
exitval = p.exitValue();

由于您的线程已被中断,因此出现了问题. destroy()将强制终止进程,然后exitValue()将为您提供退出值(应该是一个错误代码,因为它已被终止).

更多http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Process.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读