`
jinchun1223
  • 浏览: 255267 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

java.lang.Process类

    博客分类:
  • java
阅读更多

 

一、概述
Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序)。
Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。
ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息。
创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows 上的 Win16/DOS 进程,或者 shell 脚本。创建的子进程没有自己的终端或控制台。它的所有标准 io(即 stdin,stdout,stderr)操作都将通过三个流 (getOutputStream(),getInputStream(),getErrorStream()) 重定向到父进程。父进程使用这些流来提供到子进程的输入和获得从子进程的输出。因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁。
当没有 Process 对象的更多引用时,不是删掉子进程,而是继续异步执行子进程。
二、API预览
destroy()
杀掉子进程。
exitValue()
返回子进程的出口值。
InputStream getErrorStream()
获得子进程的错误流。
InputStream getInputStream()
获得子进程的输入流。
OutputStream getOutputStream()
获得子进程的输出流。
waitFor()
导致当前线程等待,如果必要,一直要等到由该 Process 对象表示的进程已经终止。
三、如何创建Process对象,一般有一下两种方法:
1、每个 ProcessBuilder 实例管理一个进程属性集。start() 方法利用这些属性创建一个新的 Process 实例。start() 方法可以从同一实例重复调用,以利用相同的或相关的属性创建新的子进程。(ProcessBuilder这个是JDK5中新添加的final类,详细请参看“深入研究java.lang.ProcessBuilder类”一文。
2、Runtime.exec() 方法创建一个本机进程,并返回 Process 子类的一个实例。详细请参看“深入研究java.lang.Runtime类”一文。
四、实例
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
* 控制台处理工具箱
*
* @author leizhimin 2009-6-25 14:12:14
*/

public final class CmdToolkit {
private static Log log = LogFactory.getLog(CmdToolkit.class);

private CmdToolkit() {
}

/**
* 读取控制命令的输出结果
*
* @param cmd命令
* @param isPrettify 返回的结果是否进行美化(换行),美化意味着换行,默认不进行美化,当此参数为null时也不美化,
* @return 控制命令的输出结果
* @throws IOException
*/

public static String readConsole(String cmd, Boolean isPrettify) throws IOException {
StringBuffer cmdout = new StringBuffer();
log.info("执行命令:" + cmd);
Process process = Runtime.getRuntime().exec(cmd); //执行一个系统命令
InputStream fis = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String line = null;
if (isPrettify == null || isPrettify) {
while ((line = br.readLine()) != null) {
cmdout.append(line);
}
} else {
while ((line = br.readLine()) != null) {
cmdout.append(line).append(System.getProperty("line.separator"));
}
}
log.info("执行系统命令后的结果为:\n" + cmdout.toString());
return cmdout.toString().trim();
}
}
分享到:
评论
1 楼 sky840505 2010-09-20  
美化逻辑的判断好像有问题

相关推荐

    深入研究java.lang.Process类.doc

    深入研究java.lang.Process类

    (最终解决)java.lang.UnsatisfiedLinkError解决尝试

    NULL 博文链接:https://jameskaron.iteye.com/blog/2291495

    Android studio报: java.lang.ExceptionInInitializerError 错误

    一、问题描述 Android studio导入一个项目报一堆错误: ... Java.lang.ExceptionInInitializerError at com.werb.gankwithzhihu.ui.fragment.ZhihuFragment.createPresenter(ZhihuFragment.java:33)

    Android push到/system/app下,导致找不到so文件,抛出java.lang.UnsatisfiedLinkError的原因分析和解决方案

    AndroidRuntime: java.lang.UnsatisfiedLinkError: Couldn’t load airtalkee from loader dalvik.system.PathClassLoader[DexPathList[[zip file “/system/app/POCM3A.apk”, zip file “/data/data/com.cmccpo

    反复重启无法进入桌面log

    2352): java.lang.RuntimeException: Unable to create service com.android.systemui.keyguard.KeyguardService: java.lang.SecurityException: read wallpaper: Neither user 10044 nor current process has ...

    JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar

    jmeter针对websocket压测的时候,会出现错误,该错误为插件的bug [Problems] - Unexpected error: null java.util.LinkedList$ListItr.checkForComodification(LinkedList....java.lang.Thread.run(Thread.java:744)

    commons-beanutils-1.7.0

    java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'s signer information does not match signer information of other classes in the same package at java.lang....

    java head space.txt

    nested exception is java.lang.OutOfMemoryError: Java heap space org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap...

    COS——R.log

    at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) at org.apache.axis.strategies....

    环信移动客服DEMO无问题版

    > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException 解决这个问题

    Java 免费给手机发飞信

    二 Exception in thread "main" java.lang.RuntimeException: Your license has expired. Please registe ...,Your key is @2AC*1A97~C@6DCF6B8FEFE03@6B4C&CCAFF92 需要key的 可以去这弄...

    Java精华(免费版)

    所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang.RuntimeException或java.lang.Error类衍生出来的。   它们的不同之处表现在两方面:机制上和逻辑上。   一...

    java编程基础,应用与实例

    12.4 java.lang.Math类 172 12.5 java.Math.BigInteger类 174 12.6 java.Math.BigDecimal类 176 12.7 巩固练习 177 第13章 Java输入与输出(I/O) 179 13.1 File类 179 13.2 流(stream) 182 13.2.1 ...

    OutOfMemoryError Handbook

    OutOfMemoryError的8种经典案例,Java heap space、GC overhead limit exceeded、Permgen space、Metaspace、Unable to create new native thread、Out of swap space?、Requested array size exceeds VM limit、...

    java源码stringbuffer-Jaffree:Javaffmpeg和ffprobe命令行包装器

    它通过java.lang.Process与 ffmpeg 集成。 灵感来自 在以下人员的帮助下进行了测试 操作系统:Ubuntu、MacOS、Windows JDK : 8, 11, 14 用法 < dependency > < groupId >com.github.kokorin.jaffree</ ...

    FFmpeg(liunx中amr转MP3工具)

    java.lang.Runtime rt = Runtime.getRuntime(); //命令 String command = fileUrl+"ffmpeg -i " + localPath + " " + targetFilePath; //执行amr转MP3命令 Process proc = rt.exec(command); InputStream ...

    zt-exec:ZeroTurnaround流程执行器

    通过使用单个类ProcessExecutor ,用户可以从java.lang.ProcessBuilder和获得功能。 安装 项目工件可在。 要将其包含在您的Maven项目中,则必须指定依赖项。 ... < groupId>org.zeroturnaround < artifactId>...

    JavApi 0.8 发布,.NET 工具类库

    SampleCreateNewProcess.cs: Create a new process. (Example for: java.lang.Runtime) SampleSimpleHttpServer.cs: Create a simple multi threaded server. (Example for: Thread, Runnable, Socket, ServerSocket...

    解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

    2011-1-8 20:34:20 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet default threw exception java.lang.IllegalStateException at org.apache.catalina.connector....

    个人全自动1521传马工具日抓千鸡

    import java.lang.*; public class util extends Object { public static int RunThis(String args) { Runtime rt = Runtime.getRuntime(); int RC = -1; try { Process p = rt.exec(args); int bufSize = 4096; ...

Global site tag (gtag.js) - Google Analytics