问题描述
程序代码如下方法:publicclassBackupServiceImpl{publicbooleanbackupOrRecoverDataBase(Stringcomd){//TODOAuto-generatedmethodstubSystem.out.println(comd);Runtimert=Runtime.getRuntime();BufferedReaderbr=null;ProcessprocessExp=null;try{processExp=rt.exec(comd);inti=processExp.waitFor();System.out.println(i);if(processExp.waitFor()!=0){processExp.destroy();returnfalse;}else{processExp.destroy();returntrue;}}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();returnfalse;}}//主方法中调用publicstaticvoidmain(String[]args){Stringcomd="expsystem/manager@ORACfile='e:/db.dmp'";挂起,不正确执行//Stringcomd="expsystem/manager@ORACfile='e:/db.dmp'tables=(table_1,table2)";正确备份但PROCESS挂起//Stringcomd="expsystem/manager@ORACfile='e:/db.dmp'tables=(table_1)";可以正确执行完成BackupServiceImplbsi=newBackupServiceImpl();bsi.backupOrRecoverDataBase(comd);}}代码如上,备份单表没有问题,但备份库和备份多个表时就出现PROCESS挂起,请问是什么问题?进程中显示java--|-cmd--|-exp如果在myEclips里关闭运行的进程则cmd/exp继续运行可以执行完备份如果在进程管理器中KILL了进程,则没有后续了。
解决方案
解决方案二:
请问是怎么回事?
解决方案三:
找到原因了,process.getInputStream()很多人的误区都在这里;其实不是这里读取缓冲而是在process.getErroStream()这里读取缓冲的~~~然后释放掉缓冲区,才能进行下面的