我知道这个主题有很多链接,但没有一个完全回答我的问题。
从我的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的使用错误。
有关如何管道的任何建议吗?
答案 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);