Java 执行sesearch命令时,Runtime.getruntime.exec不会返回任何内容
从我所看到的情况来看,这是一个常见的问题,但我尝试将提供的一些建议纳入其中。没有一个对我有用。我是不是搞错了?这就是我想做的Java 执行sesearch命令时,Runtime.getruntime.exec不会返回任何内容,java,runtime.exec,Java,Runtime.exec,从我所看到的情况来看,这是一个常见的问题,但我尝试将提供的一些建议纳入其中。没有一个对我有用。我是不是搞错了?这就是我想做的 String[] comd1 = { "/bin/sh", "-c", "sesearch", "--allow -s "+tokens[1]," -t "+tokens[2].split(":")[0]," -c "+tokens[2].split(":")[1]," -p "+tokens[3].replace(";","")," sepolicy" };
String[] comd1 = { "/bin/sh", "-c", "sesearch", "--allow -s "+tokens[1]," -t "+tokens[2].split(":")[0]," -c "+tokens[2].split(":")[1]," -p "+tokens[3].replace(";","")," sepolicy" };
Process pp = Runtime.getRuntime().exec(comd1);
stdInput = new BufferedReader(new InputStreamReader(pp.getInputStream()));
String temp, status = null;
boolean flag = false;
while ((temp = stdInput.readLine()) != null)
{
if(temp.contains("Found ") || temp.equals("") || temp.contains("Usage"))
{
}
else
flag = true;
}
if(flag) status="Yes"; else status="No";
最初设置为false的标志始终为false。它永远不会成为现实。我几乎尝试了comd1字符串数组的所有组合
请提供帮助。尝试从命令行运行该命令。输出是什么?数组中的每个元素必须是一个单独的参数。每个元素都被您调用的程序解释为一个单独的参数(将其看作是
main(String[]args)
,每个元素都是args
列表中的一个元素)。尝试使用类似于{/bin/sh'、“-c”、“seseSearch”、“-allow”、“-s”、标记[1]、“-t”、标记[2]的东西。拆分(“:”[0]、“-c”、标记[2]。拆分(“:”[1]、“-p”、标记[3]。替换(“;”、“)、“sepolicy”}
。我不知道这是否能解决问题,但它会让您更进一步…另外,使用ProcessBuilder
并将错误输出重定向到std输出…Sotirios:命令行版本为我提供了正确的输出。只是当我从java代码中尝试时,它不起作用。程序员:我也尝试过这个。不走运。屏幕上的返回值将为空。