我正在寻找从我的 Java 程序中加载和卸载一个 linux 内核模块。
我最初尝试通过使用 ProcessBuilder 运行命令来执行此操作,但是由于程序没有 root 访问权限,它失败了。以 root 身份运行我的程序也会产生相同的问题,因为它是一个需要 root 访问权限的不同进程。
那么如何在我的程序中获得 root 访问权限,以便允许运行 insmod 和 rmmod。到目前为止,这就是它的样子。
String loader (String s, int i) throws BadLoaderIntException{
if(i == 0){
s = "insmod " + s;
}else if(i == 1){
s = "rmmod " + s;
}else{
throw new BadLoaderIntException();
}
ProcessBuilder pb = new ProcessBuilder("bash", "-c", s);
pb.redirectErrorStream(true); //Outputs to stderr in-case of Error
Process shell = null;
try {
shell = pb.start();
} catch (IOException e) {
e.printStackTrace();
}
InputStream shellIn = shell.getInputStream();
...