В настоящее время я использую ProcessBuilder для запуска некоторого файла, такого как test.out. Вот некоторые из моего кодаКак использовать Java ProcessBuilder для выполнения ./filename в linux
ArrayList cmd = new ArrayList();
cmd.add("sudo");
cmd.add("./test.out");
String s = "";
try{
ProcessBuilder pb = new ProcessBuilder(cmd);
pb.directory(new File("/myPath"));
pb.redircErrorStream(true);
Process p = pb.start();
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferReader br = new BufferReader(isr);
String line = "";
while((line = br.readLine()) !=null)
{
s+=line;
}
System.out.println(s);
}
I выходного пути, который является правильным ("/ myPath"). когда я удалить линию
`cmd.add("sudo")`
выход даст мне строку:
oneoflib:must be root. Did you forgot sudo?
Но как только я добавить
cmd.add ("Суд");
нет ничего выходного.
Есть ли какие-либо ошибки в этом?
Я могу запустить sudo ./test.out из терминала, который отлично работает. Я использую eclipse BTW. спасибо.
Почему вы переменная s, определенной в коде? Разве вы не хотели печатать в своем последнем заявлении? Другими словами: System.out.println (s); – mdewit
@mdewit sry, вы были правы, я изменил код, спасибо. Я просто хочу получить вывод терминала. – Kun