这可能是java或Windows 2012 R2服务器错误。如果您知道任何此类错误,请告诉我,或者如果可能的话,请提供此行为的解释。
我有一个C可执行文件说abc.exe C可执行文件可以使用多个参数,如filesystems,cpuusage,diskactivity。
如果作为独立的可执行文件执行,我可以获得如下的正确输出。
C:\>abc.exe filesystems
C:\|153590.18|42409.92
C:\>abc.exe cpuusage
0|66695468750|61397343750|2614375000|12005347187500
1|97592187500|67641250000|4430312500|11968204687500
C:\>abc.exe diskactivity
C:|4022841134000|130685650573674324|74051|1057397|20791424524|1131448|3579545|58083987000|7029363712|18017484800|6
但如果我在java程序的帮助下运行可执行文件,如下所示,我只能获得文件系统和cpuusage的正确输出。但它没有返回磁盘活动的输出。
for filesystems
C:\>java RuntimeCheck
C:\|153590.18|42409.92
完成。
for cpuusage
C:\>java RuntimeCheck
0|66695468750|61397343750|2614375000|12005347187500
1|97592187500|67641250000|4430312500|11968204687500
完成。
但是对于磁盘活动
C:\>java RuntimeCheck
完成。
下面还给出了java程序。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class RuntimeCheck {
public static void main(String args[]) {
try {
String line;
Process p = Runtime.getRuntime().exec("cmd /c C:\\nmupm.exe diskactivity");//have changed arguments as per requirements
BufferedReader bri = new BufferedReader
(new InputStreamReader(p.getInputStream()));
BufferedReader bre = new BufferedReader
(new InputStreamReader(p.getErrorStream()));
while ((line = bri.readLine()) != null) {
System.out.println(line);
}
bri.close();
while ((line = bre.readLine()) != null) {
System.out.println(line);
}
bre.close();
p.waitFor();
System.out.println("Done.");
}
catch (Exception err) {
err.printStackTrace();
}
}
}
基本上,java程序要么无法从标准中读取,要么正在发生其他事情。此行为仅适用于Windows 2012 R2服务器版本。
您能否提供有关调试的建议?
先谢谢。