gpt4 book ai didi

java - 在线程中断的情况下提取进程退出代码

转载 作者:行者123 更新时间:2023-12-02 07:33:57 26 4
gpt4 key购买 nike

我刚刚通过 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 block 中:

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

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

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

关于java - 在线程中断的情况下提取进程退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6161604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com