我有一个应用程序,用户可以在其中列出系统中所有正在运行的任务,也可以根据需要杀死一些任务。
我的代码在这里:
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/