用Java管道命令

时间:2015-02-20 21:27:26

标签: java

我知道这个主题有很多链接,但没有一个完全回答我的问题。

从我的Java程序中,我需要执行以下命令:

sudo nohup hcidump --raw|myProgram arg1 arg2

我的方法:

 String[] cmd = {"/bin/sh", "-c", "sudo nohup hcidump --raw | myProgram arg1 arg2"};
Process p = Runtime.getRuntime().exec(cmd);

但是,我收到了sudo的使用错误。

有关如何管道的任何建议吗?

1 个答案:

答案 0 :(得分:2)

由于我不知道您遇到的错误,我只能猜出问题所在。我的猜测是你遇到了权限问题。

我能想到的两个选项是降低hcidump的权限,以便用户可以运行它们,或者让用户权限为该程序运行sudo。由于它是在java中运行的,因此您可能希望无密码访问该命令运行sudo。见this askubuntu post

另一种可能的选择是将程序作为sudo运行并从命令中删除sudo。此选项的问题在于,如果您的程序是可利用的,则恶意用户现在对您的计算机具有sudo权限。

 String[] cmd = {"/bin/sh", "-c", "nohup hcidump --raw | myProgram arg1 arg2"};
Process p = Runtime.getRuntime().exec(cmd);