描述:
 我在java程序中调用Oracle的exp外部指令 ,程序有一个这样问题请帮忙分析  ExpMain.java 采用的Process process = Runtime.getRuntime().exec(exp user/pwd@pa file=a.dmp)这种方式调用外部指令  我的java程序名称叫 ExpMain.java ,后来我写了一个expmain.bat批处理(主要就是调用java的main函数),内容如下  ****
  java ExpMain.class
  ******  当我运行该批处理的时候,系统出现一个黑色的command窗口,去执行exp命令,我也能看到我导出的dmp数据文件在增长
 
  但是,当我在bat窗口上Ctrl+Break 或者 点右上角的“关闭”按钮后,bat关了,java程序也关了,但是exp那个命令还在执行(因为我导的数据比较大,时间比较长),我想我把bat关闭后,也把那个exp的进程停止,我该如何操作?请高手解决,谢谢
  

解决方案 »

  1.   

    补充一下,我的java程序:public class ExpMain{
    public static void main(String[] args) {
    System.out.println("111111111");
    try {
    Process process=Runtime.getRuntime().exec("exp test/test@test_37 tables=(xzqh_hunan) file=d:\\test\\hunan.dmp");
    InputStreamReader isr = new InputStreamReader(process.getErrorStream());
    BufferedReader br = new BufferedReader(isr);
    String line = null;
    while ((line = br.readLine()) != null) {
    System.out.println(line);
    }
    process.waitFor();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    System.out.println("2222222222");
    }
    }我在command窗口这样运行 java ExpMain 运行,出现如下信息D:\eclipse\workspace\etldata\bin>java test.Test
    111111111Export: Release 10.2.0.1.0 - Production on 星期二 6月 16 20:57:54 2009Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
    我想立刻终止: Ctrl+break ,但是后台的exp依然在执行,这怎么办?
      

  2.   

    LZ为什么不直接在bat中执行命令?