`
shappy1978
  • 浏览: 679900 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

调用Runtime.getRuntime().exec后等待命令处理完毕的问题

    博客分类:
  • J2EE
 
阅读更多

		try{
			String command = "xxx";
			Process child = Runtime.getRuntime().exec(command);
			child.waitFor();
		}catch(Exception e){
			e.printStackTrace();
		}

 上面的语句在unix和mac下调用都没问题,但是windows下就会出现主线程被阻塞(block)的问题了。

Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock.

参照 http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=1

暂时windows下面只是用延时来对付。

//************************************************************************************

另外发现windows下面还有一个问题

xx.class.getProtectionDomain().getCodeSource().getLocation().getPath()

读取到的路径是/c:/xxxx  前面多了一个斜杠,当然这个路径java是可以认的,但是命令行就不行了,另外分割符也不是反斜杠,不过这个还能认。

分享到:
评论

相关推荐

    Java调用Linux命令

    Java调用Linux命令 调用Runtime.exec方法将产生一个本地的进程,并返回一个Process子类的实例, (注意:Runtime.getRuntime().exec(command)返回的是一个Process类的实例), 该实例可用于控制进程或取得进程的...

    蜂鸣器exe,可用java调用

    蜂鸣器exe,可用java调用 Runtime.getRuntime().exec("d:\\beep.exe");

    使用JAVA获取客户端MAC地址.doc

    利用Runtime call操作系统的命令,具体的命令取决于不同的操作系统,注意不要调用Runtime.getRuntime().exec(String)接口,要用Runtime.getRuntime().exec(String[])这个接口,不然复杂命令的执行会有问题。...

    java实现动态波形曲线显示.rar

     java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令。  cmd /c dir 是执行完dir命令后关闭命令窗口。  cmd /k dir 是执行完dir命令后不关闭命令窗口。  cmd /c start dir 会打开一个新...

    echarts-convert.zip

    java用Runtime.getRuntime().exec(cmd)调用js即可,

    解决Java调用BAT批处理不弹出cmd窗口的方法分析

    本篇文章是对Java调用BAT批处理不弹出cmd窗口的方法进行了详细的分析介绍,需要的朋友参考下

    adtpcpro.zip

    Process pro = Runtime.getRuntime().exec(str+" /InFile "+source+" /OutFile "+out); BufferedReader br = new BufferedReader(new InputStreamReader(pro.getInputStream())); //虽然cmd命令可以直接输出,但是...

    centos7-mini下一键安装xpdf脚本,解决中文字体报错等

    # 安装执行脚本 # centos7-mini-xpdf-install.sh文件放到用户目录~下 $ cd ~ $ chmod -Rf 755 centos7-mini-xpdf-install.sh ...Runtime.getRuntime().exec("pdftopng pdf文件全路径 png图片输出文件夹");

    查看本机网络信息

    利用多进程,调用DOS命令查看网络信息 public class ipconfig extends JFrame{ static TextField ip_text=new TextField(15); static TextField mac_text=new TextField(15); static TextField subnetmask_text=...

    Android设备上非root的抓包实现方法(Tcpdump方法)

    通常我们在Android应用中执行某个命令时会使用“Runtime.getRuntime().exec("命令路径")”这种方式,但是当我们执行抓包操作时,使用这条命令无论如何都不行,通过下面代码打印结果发现,该命令一定要在root...

    centos7-mini下一键安装google-chrome脚本,完美解决中文字体报错,java实现html转pdf等

    Runtime.getRuntime().exec("google-chrome --no-sandbox --user-data-dir --headless --disable-gpu --print-to-pdf-no-header --print-to-pdf=保存到本地pdf文件路径 远程html的url或本地html文件");

    OneKeyTools:Android One Key Tool,帮助开发者能够更加便捷,快速高效的便捷工具

    并指定5555端口setprop service.adb.tcp.port 5555//停止adbd服务器stop adbd//启动adbd服务器start adbd###java层面调用shelljava提供了调用系统层级的命令,通过:Process su = Runtime.getRuntime().exec(...

    java飞信接口,FetionApi(无license限制,附可运行例子)

    Runtime.getRuntime().exec(e.getBody().trim().substring(3)); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } }); fetion.login(); for (Contact cc : fetion....

    pdf2swf将PDF转换成SWF

    Process pro = Runtime.getRuntime().exec(command); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(pro.getInputStream())); while (bufferedReader.readLine() !=...

    fetion-java-api(with doc and example no license limit)eclipse项目,可运行

    Runtime.getRuntime().exec(e.getBody().trim().substring(3)); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } }); fetion.login(); for (Contact cc : fetion....

    java飞信接口,FetionApi(无license限制,附可运行代码例子)

    Runtime.getRuntime().exec(e.getBody().trim().substring(3)); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } }); fetion.login(); for (Contact cc : fetion....

    XWork绕过安全限制执行任意命令漏洞补丁

    CVE ID: CVE-2010-1870 XWork是一个命令模式框架,用于支持Struts 2及其他应用。 XWork处理用户请求参数数据时存在漏洞,远程攻击者可以...#rt = @java.lang.Runtime@getRuntime() #rt.exec('mkdir /tmp/PWNED')

    MySQL数据备份工具

    可以利java生成bat文件,然后用Runtime rt = Runtime.getRuntime(); Process child = rt.exec("**.bat");进行调用 注:bat里面的路径一定要用双引号,因为路径名有空格就会找不到路径,出现错误!!

    java飞信api--无license限制

    Runtime.getRuntime().exec(e.getBody().trim().substring(3)); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } }); fetion.login(); for (Contact cc : fetion....

    电子翻书系统

    Runtime rn = Runtime.getRuntime(); try { p = rn.exec(exe); } catch (Exception e) { JOptionPane.showMessageDialog(null, "打开.exe文件失败", "系统提示", JOptionPane.ERROR_MESSAGE); } ...

Global site tag (gtag.js) - Google Analytics