Я хочу запустить сценарий оболочки из java-программы. Этот сценарий оболочки вызывает системную библиотеку, для которой нужен большой файл в качестве ресурса.shell процесс java synchronization
Моя программа java вызывает этот скрипт для каждого слова в документе. Если я снова и снова вызываю этот сценарий с помощью Runtime.exec(), то время, затраченное на загрузку, очень велико, так как загрузка ресурса занимает много времени.
Чтобы преодолеть это, я думал о написании сценария оболочки следующим образом (чтобы непрерывно работать в фоновом режиме):
count=0
while count -lt 10 ; do
read WORD
//execute command on this line
done
Мне нужно получить вывод команды в моей Java программы и обрабатывать ее дальше. Как я должен кодировать операции ввода-вывода для выполнения этой задачи?
Я пробовал записывать слова в выходной поток процесса и считывать выходные данные из входного потока процесса. Но это не сработает и выбрасывает прерывистую трубку.
try {
parseResult = Runtime.getRuntime().exec(parseCommand);
parsingResultsReader = new BufferedReader(new InputStreamReader (parseResult.getInputStream()));
errorReader = new BufferedReader(new InputStreamReader (parseResult.getErrorStream()));
parseResultsWriter = new BufferedWriter(new OutputStreamWriter((parseResult.getOutputStream())));
} catch (IOException e) {
e.printStackTrace();
}
parseResultsWriter.write(word);
parseResultsWriter.flush();
while ((line = parsingResultsReader.readLine()) != null) {
// capture output in list here
}
Пожалуйста, помогите с этим вопросом
Должен ли процесс «оболочки» быть независимым от виртуальной машины, или VM может начать его самостоятельно? – Romain