Написание кода Java для запуска текстового исполняемого файла в Linux, у меня есть проблема, чтобы распечатать его вывод. Этот исполняемый файл фактически является nmap -sP и поэтому принимает параметры.Как читать вывод процесса exec в Java?
Каждый раз, когда я вызываю скомпилированный класс, я вижу только первую выходную строку, но ничего больше.
Это файл runFile.java:
import java.lang.Runtime;
import java.lang.Process;
import java.io.*;
import java.lang.InterruptedException;
public class runFile {
public static void main (String args[]) throws IOException, InterruptedException {
Runtime r = Runtime.getRuntime();
Process p = r.exec("/home/diegoaguilar/Dropbox/Buap/SO/file.exe "+args[0]+args[1]);
InputStream stream = p.getInputStream();
BufferedReader reader = new BufferedReader (new InputStreamReader(stream));
String salida = reader.readLine();
while (salida != null) {
System.out.println(salida);
salida = reader.readLine();
}
//p.waitFor();
}
}
Таким образом, это не содержание file.exe:
nmap -sP $segment1-$segment1
Независимо от того, какие аргументы, либо действительным или нет, я называю runFile с , это всегда выводится на консоль что-то вроде первой линии:
Запуск Nmap 5.2 1 (http://nmap.org) в 2013-08-25 2:09 CDT
Вы должны прочитать процесса в InoutStream (который является результатом процесса), [например] (http://stackoverflow.com/questions/16093754/how-do-i-execute-a- последовательности-консоли-команд/16094810 # 16094810) и [exmple] (http://stackoverflow.com/questions/11893469/java-execute-a-program-with-options-like-ls-l/11893495 # 11893495). Один из них выводит процесс непосредственно на стандартную версию, другой использует поток для чтения InputStream, чтобы не блокировать текущий поток – MadProgrammer