Russian

Как обработать выходной поток, подключенный к Getruntime Exec во время выполнения?

Как обработать выходной поток, подключенный к Getruntime Exec во время выполнения?

Недавно некоторые из наших читателей сообщили, что они обнаружили выходные данные getruntime exec во время выполнения.

Получите лучший инструмент для ремонта ПК для вашего компьютера. Скачать сейчас.

Среда выполнения имеет простой метод getRuntime(), который извлекает текущую среду выполнения Java. Это похоже на единственное решение, чтобы получить пропуск для нашего исполняемого объекта. Эта специальная ссылка позволит вам запускать внешние приложения, вызывая метод exec() каждого нашего класса среды выполнения.

См. ответ Бенджамина Грюнбаума на ProcessBuilder, в котором рассматривается API, доступный в основном через Java 7.

Вы требуете запускать каждый новый поток, в котором будет считываться право вывода Process.waitFor(). Затем выходные данные можно реплицировать из консоли этого потока.

Process.Is getoutputstream() на самом деле является вводом, который обычно является стандартным вводом для операции. Инструменты Process.getInputStream(), а также Process.Return geterrorstream() InputStream, которые выводятся на стандартный вывод посредством stderr процесса. InputStream в сочетании с OutputStream появляются из точки, указывающей на представление конкретного вызывающего объекта, что будет противоположным с точки зрения процесса.

Конечный продукт процесса, стандартный вывод, часто передается владельцу, поэтому все вызывающие объекты получают определенный getInputStream() для соответствующего чтения стандартного вывода:

Process proc = Runtime.getRuntime().exec(cmdArr, env, cwdir);InputStreamReader isr означает новый InputStreamReader(proc.getInputStream());BufferedReader rdr = BufferedReader(isr);в то время как ((новая строка = rdr.readLine()) Null) !=  System.out.println(строка); isr = до искусства InputStreamReader(proc.getErrorStream());rdr = новый BufferedReader(isr);в то время как ((строка Rdr =.readLine()) Null) !=  System.out.println(строка); rc = proc.waitFor(); // ждем завершения процессаВызывающий объект мог использовать 

Process.getOutputStream() для вывода данных просто по умолчанию из этого процесса. Этот код купона можно добавить после генерации 'proc' в первом пределе вышеуказанного процесса для отправки данных для создания стандартного ввода процесса:

// Отправляем данные, чтобы вы могли контролировать лечение (улучшено, требуется ввод содержимого)OutputStream = настольный компьютер proc.getOutputStream();Содержимое в байтах = new Bytes("Hellonasdfn adma");os.write(content.arr, content.off, content.length());ос.закрыть(); // следует носить try/finally try/resource

Также сделайте то же самое, прежде чем переходить к текущему выпуску. Не забудьте закрыть все операционные системы OutputStream (используя try/resource с try/finally). Таким образом, весь процесс знает, какие стандартные входные данные были приняты, и может завершить обработку информации.

Основные фрагменты кода Java с использованием Java.lang.Process.getOutputStream (показаны 20 лучших результатов из 6 624)

<основной><кейс><кейс><дел>
  • Общие методы получения эссе Pro
<дел><ол>

  • Быстрый и простой ремонт ПК

    Ваш компьютер работает медленно, и вы получаете сообщения об ошибках? Не волнуйтесь, Reimage может это исправить. Reimage обнаружит, что не так с вашим компьютером, и устранит проблемы с реестром Windows, которые вызывают у вас широкий спектр проблем. Вам не нужно быть экспертом в компьютерах или программном обеспечении — Reimage сделает всю работу за вас. Приложение также обнаружит файлы и приложения, которые часто дают сбой, и позволит вам исправить их проблемы одним щелчком мыши. Нажмите сейчас:

  • Шаг 1. Загрузите и установите версию Reimage.
  • Шаг 2. Запустите программу и нажмите "Сканировать".
  • Шаг 3. Нажмите "Восстановить", чтобы исправить ошибки, обнаруженные при сканировании.


  • private void myMethod()


    время выполнения getruntime exec outputstream

  • @Replacepublic void выполняет flush() IOException процесс.getOutputStream().flush();
    @Replacepublic nullify b) write(int вызывает IOException процесс.getOutputStream().write(b);
    runtime getruntime exec outputstream

    public flush() позволяет избежать IOException процесс.getOutputStream().flush();

    Блокирует ли Runtime exec?

    exec() не будет блокировать поток начальной загрузки, кроме того, ваш код делает то же самое, что и коды в рассмотрении, просто отлично.

    общедоступная пустая запись (целые одеяла b) IOException процесс.getOutputStream().write(b);

    Что такое экземпляр среды выполнения?

    Каждое Java-приложение имеет одноразовый экземпляр с точки зрения класса Runtime, который позволяет нашему приложению взаимодействовать с окружающей средой, и оно также запускается. Текущее время выполнения определяется с помощью системы getRuntime. Программа не может создать свой экземпляр использования, обычно связанный с моим классом.

    public void closeOutputStream() вызывает исключение IOException процесс.getOutputStream().close();
    private int cmd) exec(String throws InterruptedException, IOException  ProcessBuilder pb = новый ProcessBuilder (exe, cmd);  pb шунтировать неисправность электричества (истина); процесс v = pb.start();  p.getOutputStream().close();  ByteArrayOutputStream = baos modern ByteArrayOutputStream();  копировать (p.getInputStream(), baos); Int 3rd r означает p.waitFor();  (р!=0) если LOGGER.info(exe+"cmd:output:n"+baos);  Создатель;

    Что такое стиль выполнения в Java?

    Класс Runtime является подклассом класса Object, который также может предоставлять доступ к различной локализованной информации о погоде, которую предоставляет программа. Среда выполнения Java создает множество отдельных экземпляров этого класса, в которых он связан с программой.

    частное превосходство (процесс p) будет   IOUtils.closeQuietly(p.getInputStream());    IOUtils.closeQuietly(p.getOutputStream());    IOUtils.closeQuietly(p.getErrorStream());   наконец-то   если (р != ноль)     н. разрушать();      
    нулевой частный статический процесс студента closeStreams(@Nullable Process process) в экземпляре (процесс != null)  IOUtils.closeQuietly(process.getInputStream()); IOUtils.closeQuietly(process.getOutputStream());  IOUtils.closeQuietly(process.getErrorStream()); 
    @Replacepublic void close() выдает конкретное исключение IOException процесс.getOutputStream().close(); Попытаться  errWriterThread.join();  outWriterThread.join();  процесс.ждите();  Мошенничество (InterruptedException e)  генерировать новые исключения ProcessException; 
    private boolean sendCommand(String cmd, @NotNull Process pythonProcess)  Попытаться    OutputStreamWriter Writer = лучше OutputStreamWriter(pythonProcess.getOutputStream());    Writer.write(cmd);    писатель.написать("n");    Писатель. мыть посуду();   действительный доход;   принято (исключение e)    _.msg("nОшибка отправки запроса интерпретатору: " + cmd);    вернуть ложь;  
    частный избегайте startPython(String tmpPath, String args) включает IOException  Строка pythonBinaryPath означает config.getString(PythonOptions.PYTHON_BINARY_PATH);  Попытаться   Время выполнения .getRuntime().exec(pythonBinaryPath);   бодрить (игнорировать IOException)    дать совершенно новое RuntimeException(pythonBinaryPath + "Определенно не имеет значения для действительного двоичного файла Python.");    Процесс означает Runtime.getRuntime().exec(pythonBinaryPath in + -B ins + tmpPath + FLINK_PYTHON_PLAN_NAME + args);  Начальный вид (новый StreamPrinter(process.getInputStream()))).start();  новый поток (новый StreamPrinter (process.getErrorStream ())). Начало(); Сервер = новый серверный плагин (0); Ссервер.setSoTimeout(50);  process.getOutputStream().write("plann".getBytes(ConfigConstants.DEFAULT_CHARSET));  процесс.getOutputStream().flush();
     Пустое частное свойство caseWithCloser(Closer ближе)  close.register(process.getInputStream());  close.register(process.getOutputStream()); }
    Создать универсальный статический пейджер (команда List)   Попробуйте процесс Process = последний ProcessBuilder()        .команда(команда) . ! . ! . . . . ! ! ..redirectOutput(ProcessBuilder.redirect.inherit)       .redirectError(ProcessBuilder.redirect.inherit)       .Начинать();   Возвращает новый пейджер (process.getOutputStream(), process);    поймать (IOException e)    System.err.Failed println("Ошибка: для широкого отзывчивого пейджера: " + e.getMessage());    вернуть createNullPager(); 
     защищенный этап sudoWithPass(ArgumentListBuilder args) выдает исключение IOException    args.prepend(sudoExe(),"-S");    listener.getLogger().println("$ "+Util.join(args.toList()," "));    Pb ProcessBuilder = Одиночный ProcessBuilder (args.toCommandArray());    p-действие = pb.start();            PrintStream равен ps new PrintStream(p.getOutputStream());    п . с . println (корневой пароль);    ps.println (пароль root);    ps.println (пароль root);    продолжайте возвращать p;  }.start(слушатель,rootpassword);
    ProcessWrapper(Процесс процесса, String processTag, Строковые инструкции, Consumer, consoleoutputstreamconsumer Кодирование страницы ki, String errorPrefix)  this.process равно процессу;  this.processTag = процессTag;  this.command равно команде;  this.startTime = System.currentTimeMillis();  this.processOutputStream равно StreamPumper.pump(process.getInputStream(), новый "", outputconsumer(consumer), encoding);  this.processErrorStream = StreamPumper.pump(process.getErrorStream(), оригинальный ErrorPrefix, errorconsumer(consumer), кодировка);  this.processInputStream равно new PrintWriter (новый OutputStreamWriter (process.getOutputStream()));

    Исправьте синий экран смерти и другие проблемы с Windows. Нажмите сюда для того, чтобы скачать.

    How To Handle The Output Stream Of Getruntime Exec At Runtime?
    Wie Handhabe Ich Den Ausgabestrom Von Getruntime Professional Zur Laufzeit?
    ¿Cómo Manejar El Flujo De Uso De Getruntime Exec En Tiempo De Ejecución?
    Come - Gestire Il Flusso Di Output Collegato A Getruntime Exec In Fase Di Esecuzione?
    Comment Va-t-il Gérer Le Flux De Sortie De L'exec Getruntime Au Moment De L'exécution ?
    Hur Hjälper Jag Dig Att Hantera Utdataströmmen I Getruntime Exec Vid Körning?
    Jak Pomóc W Obsłudze Strumienia Wyjściowego Getruntime Exec W Czasie Wykonywania?
    Como Lidar Com O Fluxo De Saída Do Getruntime Exec Usando O Tempo De Execução?
    Hoe Moet Ik Omgaan Met De Uitvoerstroom Die Tijdens Runtime Aan Getruntime Exec Is Gekoppeld?
    런타임에 Getruntime Exec의 출력 전류를 어떻게 처리합니까?
    г.

    Share this post

    About the author