调用操作系可执行的命令

java 可以调用操作系统上可以执行的命令

 

调用方式一:

Process process = Runtime.getRuntime().exec(new String []{"ping","127.0.0.1" }, null,null);

.exec方法:

 public Process exec(String cmdarray[], String[] envp, File dir)

参数: cmdarray 命令及参数组成的数组:可执行的命令字符串,用空格分隔而生成的数组

            envp 每一个元素为一个环境变量,每个元素格式 :变量名=变量值

             dir 指定子进程的工作目录

          实际是调用  ProcessBuilder  实现的,源码:

         

  public Process exec(String[] cmdarray, String[] envp, File dir)
	throws IOException {
	return new ProcessBuilder(cmdarray)
	    .environment(envp)
	    .directory(dir)
	    .start();
    }

 

           

调用方式二:

  ProcessBuilder processBuilder  = new ProcessBuilder(List<String> command);//命令及参数组成LIST

    processBuilder.environment().put("变量名","变量值");//设置环境变量

     processBuilder.directory("工作目录");//指定子进程的工作目录

     processBuilder.start();//启动子进程。

 

上面两种方式,创建一个本机进程来执行命令,并返回 Process 子类的一个实例,表示执行命令的进程。

 

 

  

 

Process 方法:

 

abstract  void destroy()
          杀掉子进程。
abstract  int exitValue()
          返回子进程的退出代码。 0正常结束
abstract  InputStream getErrorStream()
          获取子进程的标准错误流(stderr)。
abstract  InputStream getInputStream()
          获取子进程的标准输入流(stdout )。
abstract  OutputStream getOutputStream()
          获取子进程的标准输出流(stdin)。
abstract  int waitFor()
          导致当前线程等待,一直要等到由该 Process 对象表示的进程已经终止。并返回进程的退出代码, 0正常结束。

 

某些平台为进程的输出流提供有限的缓冲区大小,当缓冲区满时,可能导至进程阻塞甚至死锁。

 

因此即使不需要进程的输出,最好也把输出流读出来,避免缓冲区满导至进程阻塞。

 

Process 使用的方式:

 1.读取标准输出流和标准错误输出流

 2.调用waitFor 方法等待进程结束,并获得进程退出码,根据退出码判读进程是否正常结束。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值