DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

Java调用外部程序并计算运行时间


下面的代码演示了启动外部程序"d:/apps/Kitty/kitty.exe -load cat47",获取其输出,计算整个运行时间的方法。注意创建ProcessBuilder对象时第一个参数的写法,路径必须是绝对路径(除非该程序在系统的$PATH中),即使后面设置了工作目录。

public static void main(String[] args) throws IOException, InterruptedException {

long start = System.currentTimeMillis(); // 定义外部程序:kitty.exe -load cat47,

ProcessBuilder pb = new ProcessBuilder("d:/apps/Kitty/kitty.exe", "-load", "cat47");

// Map env = pb.environment(); 这里可以设置环境变量 // env.put("VAR1", "myValue"); // env.remove("OTHERVAR"); // env.put("VAR2", env.get("VAR1") + "suffix"); // pb.directory(new File("c:/tmp")); 这里可以设置程序的工作目录 Process p = pb.start(); // 启动外部进程 // OutputStream out = p.getOutputStream(); 可以用out向进程写数据(输入) InputStream in = p.getInputStream(); int recvNum; byte[] buf = new byte[256]; while ((recvNum = in.read(buf)) != -1) { String res = new String(buf, 0, recvNum, "UTF-8"); System.out.print(res); } p.waitFor(); // 一直阻塞到p运行完毕 long end = System.currentTimeMillis(); System.out.println("duration: " + (end - start) + " ms."); }

任务cat47连接47的telnet端口,cat一个大文件(2.4MB,内容见笔记“ 用vim制作大报文传输测试文件 ”)并退出,以验证服务器和客户端之间网络传输的效率,cat47所使用的自动登录脚本如下:

assword: goduty $ cat big* $ exit



Published

Feb 28, 2013

Last Updated

Feb 28, 2013

Category

Tech

Tags

  • Java 106

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor