java - 通过 Runtime.exec() 命令在 java 中终止进程时如何获得异常?

标签 java android

我有一个应用程序,用户可以在其中列出系统中所有正在运行的任务,也可以根据需要杀死一些任务。

我的代码在这里:

public void killProcess(String PID) {
    try {
        Process p = Runtime.getRuntime().exec("/system/bin/kill " + PID);
        Toast.makeText(getBaseContext(), "Process has been killed", Toast.LENGTH_SHORT).show();
    } catch (IOException e) {
        Toast.makeText(getBaseContext(), e.getMessage().toString(), Toast.LENGTH_SHORT).show();
    }
}

这对我有用,但只有当应用程序可以被普通用户杀死时,我没有授予该应用程序 super 用户权限,我不想,我想要的是,得到一条消息 Permission denied Operation not permitted 当普通用户无法杀死它时。就这样。有什么想法可以正确完成这项工作吗?

我还看到 Process.killProcess(int PID) 可以使用,因为它是 android 的方法,但也不知道如何在这里获取异常。

谢谢


已编辑

工作代码:

public void killProcess(String PID) {
    try {
        Process p = Runtime.getRuntime().exec("/system/bin/kill " + PID);
        p.waitFor();
        if (p.waitFor()==0){
            Toast.makeText(getBaseContext(), "Process: " + PID + " has been killed.", Toast.LENGTH_SHORT).show();
        } else Toast.makeText(getBaseContext(), "Argument must be process ID or kill process: " + PID + " is not permitted.", Toast.LENGTH_LONG).show();
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(getBaseContext(), e.getMessage().toString(), Toast.LENGTH_SHORT).show();
    }
}

最佳答案

您可以使用 p.getErrorStream() 读取您的 kill Process 打印到 stderr 的任何错误消息。您还可以检查 p.waitFor() 的返回值以查看命令是成功 (0) 还是失败(否则)。

关于java - 通过 Runtime.exec() 命令在 java 中终止进程时如何获得异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30139840/

相关文章:

java - 如何在Java/Android中实现DUKPT加解密?

java - 在没有 toArray 的情况下提高 JNA 性能

java - android UDP 不可靠性

android - 当我在android studio中运行项目时,任务transformClassesWithJavaResourcesVerifierForDebug的执行失败

java - Android开发图片上传损坏

java - 阻止 Win+R 打开运行工具

java - 使用 Jackson : Can we have optional variables in a POJO 解析 JSON

android - 在android中接收多个通知并删除通知

Android - 按下后退按钮时停止 AsyncTask 并返回到上一个 Activity

android - 使用测试帐户测试应用内结算