我正在使用运行时从我的Java程序运行命令提示符命令.但是我不知道如何获得命令返回的输出.
这是我的代码:
Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe", "-send" , argument};
Process proc = rt.exec(commands);
Run Code Online (Sandbox Code Playgroud)
我尝试过,System.out.println(proc);但没有返回任何东西.该命令的执行应返回由分号分隔的两个数字,我怎样才能在变量中打印出来?
这是我现在使用的代码:
String[] commands = {"system.exe", "-get t"};
Process proc = rt.exec(commands);
InputStream stdIn = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdIn);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<OUTPUT>");
while ((line = br.readLine()) != null)
System.out.println(line);
System.out.println("</OUTPUT>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
Run Code Online (Sandbox Code Playgroud)
但我没有得到任何东西作为我的输出,但当我自己运行该命令它工作正常.
如何确保传递给我的程序的文件是有效的exe文件?
实际上我的程序将一个文件作为输入并运行它,但用户可以输入任何文件,所以我必须确保输入是一个有效的exe.
我知道你可以打电话
Runtime.getRuntime().exec(file);
Run Code Online (Sandbox Code Playgroud)
如果它不可执行,则获得异常,但这是不安全的,因为运行可执行文件可能会产生副作用.
我想只是在Windows上检查扩展是否足够,但有没有办法可以读取*nix文件系统上的可执行位?
找出文件在OS中是否可执行的最佳方法是什么?