- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java程序执行Linux命令(JSP运行其他程序)
java程序中要执行linux命令主要依赖2个类:Process和Runtime首先看一下Process类:
ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,北大青鸟中关村软件学院并返回 Process 子类的一个实例,该实例可用来控制进程并获得相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、??检查进程的退出状态以及销毁(杀掉)进程的方法。??创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows 上的 Win16/DOS 进程,或者 shell 脚本。创建的子进程没有自己的终端或控制台。它的所有标准 io(即 stdin、stdout 和 stderr)??北大青鸟中关村软件学院操作都将通过三个流 (getOutputStream()、getInputStream() 和 getErrorStream()) 重定向到父进程。??父进程使用这些流来提供到子进程的输入和获得从子进程的输出。因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁。??当没有 Process 对象的更多引用时,不是删掉子进程,而是继续异步执行子进程。??对于带有 Process 对象的 Java 进程,没有必要异步或并发执行由 Process 对象表示的进程。
特别需要注意的是:1,北大青鸟中关村软件学院创建的子进程没有自己的终端控制台,所有标注操作都会通过三个流 (getOutputStream()、getInputStream() 和 getErrorStream()) 重定向到父进程(父进程可通过这些流判断子进程的执行情况)2,因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁
? ? abstract??void destroy()? ?? ?? ?? ?? ???杀掉子进程。? ?? ? abstract??int exitValue()? ?? ?? ?? ?? ???返回子进程的返回值。根据惯例,值0表示正常终止。? ?? ? abstract??InputStream getErrorStream()? ?? ?? ?? ?? ???获取子进程的错误流。? ?? ? abstract??InputStream getInputStream()? ?? ?? ?? ?? ???获取子进程的输入流。? ?? ? abstract??OutputStream getOutputStream()? ?? ?? ?? ?? ???获取子进程的输出流。? ?? ? abstract??int waitFor()? ?? ?? ?? ?? ???导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。??? ?? ?? ?如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程。
特别需要注意:如果北大青鸟中关村软件学院子进程中的输入流,输出流或错误流中的内容比较多,最好使用缓存(注意上面的情况2)。再来看一下Runtime类:
每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。可以通过getRuntime方法获取当前运行时环境。? ?应用程序不能创建自己的Runtime类实例。??
介绍几个主要方法:
? ? Process exec(String command)? ?? ?? ?? ?? ? 在单独的进程中执行指定的字符串命令。??? ? Process exec(String command, String[] envp)? ?? ?? ?? ?? ? 在指定环境的单独进程中执行指定的字符串命令。??? ? Process exec(String command, String[] envp, File dir)? ?? ?? ?? ?? ? 在有指定环境和工作目录的独立进程中执行指定的字符串命令。??? ? Process exec(String[] cmdarray)? ?? ?? ?? ?? ? 在单独的进程中执行指定命令和变量。? ?? ? Process exec(String[] cmdarray, String[] envp)? ?? ?? ?? ?? ? 在指定环境的独立进
您可能关注的文档
最近下载
- 初一下册-数学北师大版1.全等三角形的概念和性质(提高)巩固练习.doc VIP
- 中国管理学 课件全套 王凤彬 第1--15章 导论 ---- 管理创新.pptx
- 七年级数学下册《认识三角形》练习题及答案解析(北师大版).docx VIP
- 道路绿化合同.docx VIP
- 高边坡支护专项施工方案通过专家论证.doc VIP
- 智慧农业建设项目投资方案.docx VIP
- 2023数据资产入表及估值实践与操作指南.docx VIP
- 220kV断路器合闸、分闸、防跳回路及本体非全相保护的讲解(课件).ppt VIP
- 数据资产入表及估值实践与操作指南(2023).pdf VIP
- 初一语文七年级上下册古诗词硬笔描红字帖.pdf VIP
文档评论(0)