使用java runtime exec运行连续的Commands Linux
发布时间:2020-12-15 04:12:14 所属栏目:Java 来源:网络整理
导读:我需要使用 java代码运行两个命令linux,如下所示: Runtime rt = Runtime.getRuntime(); Process pr=rt.exec("su - test"); String line=null; BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream())); while((line=input.
我需要使用
java代码运行两个命令linux,如下所示:
Runtime rt = Runtime.getRuntime(); Process pr=rt.exec("su - test"); String line=null; BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream())); while((line=input.readLine()) != null) { System.out.println(line); } pr = rt.exec("whoami"); input = new BufferedReader(new InputStreamReader(pr.getInputStream())); line=null; while((line=input.readLine()) != null) { System.out.println(line); } int exitVal = pr.waitFor(); System.out.println("Exited with error code "+exitVal); } catch(Exception e) { System.out.println(e.toString()); e.printStackTrace(); } 问题是第二个命令(“whoami”)的输出不显示第一个命令(“su – test”)上使用的当前用户!! 解决方法
如
Javadoc for Runtime.exec()所述:
每次通过exec()执行命令时,它都将在一个单独的子进程中执行.这也意味着在返回时su立即停止存在效果,这就是为什么whoami命令将在另一个子进程中执行,再次使用最初启动该程序的用户. su test -c whoami 会给你想要的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |