在 Linux 下编写一些用于运行文本可执行文件的 Java 代码,我在打印输出时遇到了问题。这个可执行文件实际上是一个nmap -sP并因此接收参数。
每次调用已编译的类时,我只能看到第一条输出行,而没有其他内容。
这是 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 ,无论是否有效,它总是会打印到控制台,类似于第一行:
在 2013-08-25 02:09 CDT开始 Nmap 5.21 ( http://nmap.org )