У меня есть кусок кода, который вызывает экземпляр Баш терминала посредством использования следующих -Java.lang.Runtime
proc = Runtime.getRuntime().exec("/bin/bash", null, working-dir);
, а затем для запуска команды Unix на этом вызывается экземпляр Баш I использую объект PrintWriter, как это -
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
Я тогда с помощью объекта PrintWriter на самом деле выполнить команды в следующем fashion--
out.println("pwd");
out.println("ls >a.txt");
Хотя обе команды работают отлично, у меня есть проблема в том случае, когда я создаю команду, основанную на некотором пользовательском вводе. Будучи конкретным, я строить команду, чтобы отправить несколько файлов на принтер в сети, и я делаю это так -
while ((strLine = br.readLine()) != null) {
cmd= blah +blah +blah;//Construction of the command
out.println(cmd);
}
Что на самом деле происходит в приведенном выше фрагменте кода является то, что Вг чтение из файла, который содержит все файлы, которые необходимо распечатать, а затем строка, содержащая имя файла, входит в команду, и я пишу ее на объект PrintWriter.
проблема заключается в том, что я предполагаю, что происходит какая-то очередность, и объект PrintWriter фактически не передает команду вызванному экземпляру bash каждый раз, когда создается команда. Итак, в конце дня, если есть 40 команд, которые строятся, печатается только около 16-18 документов. Я думаю, это потому, что он отправляет все команды на принтер за один раз, в результате чего теряется. Я хочу устранить эту потерю.
Любые указатели ??
Благодаря P1nG
зависит от того, выполняется ли пользователь sudo или нет. – ping