ProcessBuilder 和 Runtime(转)】的更多相关文章

1.版本原因 ProcessBuilder是从java1.5加进来的,而exec系列方法是从1.0开始就有的,后续版本不断的重载这个方法,到了1.5已经有6个之多. 2.ProcessBuilder.Runtime和Process 三者之间的联系 ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控制进程状态并 获得相关信息. 3.ProcessBuilder和P…
http://desert3.iteye.com/blog/1596020 ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控制进程状态并获得相关信息. Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的退出状态以及销毁(杀掉)进程的方法.创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,M…
ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控制进程状态并获得相关信息. Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.检查进程的退出状态以及销毁(杀掉)进程的方法.创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows 上的 Win16/DOS 进程,或者 sh…
在Android中想要进行Ping,在不Root机器的情况下似乎还仅仅能进行底层命调用才干实现. 由于在Java中要进行ICMP包发送须要Root权限. 于是仅仅能通过创建进程来攻克了.创建进程在Java中有两种方式,分别为: 1. 调用ProcessBuilder的构造函数后运行start() 2. 用Runtime.getRuntime().exec()方法运行 经过使用后发现两者有差别可是也并非非常大,两个样例说明: 1.调用ProcessBuilder的构造函数后运行start(): P…
概述 ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法.在J2SE 1.5之前,都是由Process类处来实现进程的控制管理.每个 ProcessBuilder 实例管理一个进程属性集.它的start() 方法利用这些属性创建一个新的 Process 实例.start() 方法可以从同一实例重复调用,以利用相同的或相关的属性创建新的子进程. 每个进程生成器(即ProcessBuild…
在Java中执行系统命令,主要是使用ProcessBuilder和Runtime.getRuntime().exec().而在这里主要是介绍两种方法的使用. 使用情景是在linux系统中,使用mencoder来进行视频转码.将视频转为flv格式,因为转为flv格式命令较为简单,如要转为MP4格式,可以看官方文档介绍 一.使用Runtime ##上传之后的视频文件名为test.tmpmedia String command = "mencoder test.tmpmedia -o test.flv…
目录 . JAVA JVM . Java JNI: Java Native Interface . Java Create New Process Native Function API Analysis In Linux . Java Create New Process Native Function API Analysis In Windows 1. JAVA JVM 0x1: JVM架构简介 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算…
首发:个人博客,持续更新和纠错 主要使用技术:1)FFmpeg,用于主流格式之间的转换,例如AVI,MP4,FLV等.2)MEncoder,用于奇葩格式转主流格式,例如RMVB转AVI.这样我们可以把奇葩格式先转AVI,再由FFmpeg把AVI转成想要的格式.3)java的执行命令行操作的技术,这样安装在服务器上的↑这两个转换器就可以被java调用了.包括ProcessBuilder和Runtime这两种调法.可以参考这篇. FFmpeg的官网在这里,其文档在这里.MEncoder的官网在这里,…
不管是在Java或者Android中运行命令行语句殊途同归都是创建一个子进程运行调用可运行文件运行命令.类似于Windows中的CMD一样. 此时你有两种方式运行:ProcessBuilder与Runtime:两种创建方式各有千秋,至于差别详见:[Java][Android][Process] ProcessBuilder与Runtime差别 在Android中创建子进程运行命令的时候有着一定的限制: 1.JVM提供的内存有限. 2.底层缓冲区间大小有限. 3.在高并发情况下easy造成堵塞.…
我在以前的文章中提到,使用Java不会有一个问题,创建运行命令来创建太多进程后创建进程行语句. [Android] ProcessBuilder与Runtime.getRuntime().exec分别创建进程的差别 进行多次測试后发现是由于没有正常退出进程,以及全然读取掉流数据.和关闭流导致的问题. 在多次优化后,建立例如以下封装类: ProcessModel.java import java.io.BufferedReader; import java.io.IOException; impo…
Atitit s2018.6 s6  doc list on com pc.docx Atitit s2018.6 s6  doc list on com pc.docx  Aitit algo fix 算法系列补充.docx Atiitt 兼容性提示的艺术 attilax总结.docx Atitit    应用程序容器化总结 v2 s66.docx Atitit   file cms api  uke  api.docx Atitit  docker useage.docx Atitit  E…
参考:http://blog.csdn.net/zhu_xun/article/details/19539513 http://www.cnblogs.com/kingcucumber/p/3180146.html 一.Process类 ProcessBuilder.start()创建一个本机进程,并返回一个Process子类的一个实例,该实例可以获取进程的相关信息,也可以控制进程.这个进程没有自己的终端,它的操作结果io都重定向到了它的父进程,父进程通过getInputStream(),get…
不管是Android亦或者Java中或多或少须要调用底层的一些命令.运行一些參数: 此时我们须要用到Java的Process来创建一个子进程.之所以是子进程是由于此进程依赖于发起创建请求的进程,假设发起者被Kill那个子进程也将Kill. 对于Process相信使用过的朋友一定不会陌生,它具有例如以下特点: 1.创建简单 2.控制难 3.easy导致无法创建子进程 4.假设是多线程那么非常有可能造成内存溢出 以上现象假设你仅仅是偶尔使用一次,创建一个进程也许你什么都没有感觉到,可是假设你使用了多…
前言 由于S2-016.S2-017出现的原因时相同的,只是由于poc不一样,造成了不同的攻击.S2-016是RCE,S2-017是开发型重定向漏洞.这里将两个漏洞放一起分析.另外“Struts2系列起始篇”是我整各系列的核心,希望大家能花些时间先看看. 正文 在起始篇中我们讲到过,Struts2在StrutsPrepareFilter中通过DefaultActionMapper.getMapping获取action对应的action mapper时会调用handleSpecialParamet…
Java审计之命令执行篇 0x00 前言 在Java中能执行命令的类其实并不多,不像php那样各种的命令执行函数.在Java中目前所知的能执行命令的类也就两种,分别是Runtime和 ProcessBuilder类. 0x01 Runtime 执行命令分析 关于Runtime具体的使用可以看这篇文章,反射去调用Runtime. Java学习之反射篇 @WebServlet("/execServlet") public class execServlet extends HttpServ…
struts2漏洞复现合集 环境准备 tomcat安装 漏洞代码取自vulhub,使用idea进行远程调试 struts2远程调试 catalina.bat jpda start 开启debug模式,注意关闭tomcat程序 在idea中配置remote调试,对应端口为8000. 导入相应jar库. Struts2基础 框架结构: 控制器:核心过滤器StrutsPrepareAndExecuteFilter.若干拦截器和Action组件实现 模型:有JavaBeans或JOPO实现 视图 配置文…
一般我们使用Java运行其他类中的方法的时候,无论是静态调用还是动态调用,都是在当前的进程中执行的.也就是只有一个Java虚拟机实例在运行.有时候需要通过Java代码启动多个Java子进程,这样做会消耗些资源,但是程序变得更稳定.因为新启动的进程是在不同的虚拟机中运行的. 在Windows中,一个虚拟机就是一个 有两种方式调用一个进程 1.System.exec 子进程: package org.zln.thread; import java.io.File; import java.io.IO…
这段时间要写一个java调用外部程序的功能,踩了几个坑,这里分享一下. 首先用的是RunTime,调用代码如下: Process pro = Runtime.getRuntime().exec("cmd.exe /C start " + exePath + " " + params);// exePath是外部程序路径,params是参数,不清楚为什么这样写,没研究太细,但是不这样写程序调不起来 pro.waitFor();// 等待进程退出////// 问题就在这…
原文地址:https://blog.csdn.net/c315838651/article/details/72085739 通过Java执行系统命令,与cmd中或者终端上一样执行shell命令,最典型的用法就是使用Runtime.getRuntime().exec(command)或者new ProcessBuilder(cmdArray).start().让我们看看Runtime.ProcessBuilder的详细解析和详细用法. Runtime Runtime类是Java程序的运行时环境.…
系列说明 浅析Java.lang.Runtime类 浅析Java.lang.Process类 浅析Java.lang.ProcessBuilder类 可以使用java中的ProcessBuilder执行本地命令或脚本等工作 以下是一个简单的使用java调用本地python脚本的例子 List<String> commands=new ArrayList(); commands.add("python"); commands.add(pkg); commands.add(&q…
最近由于工作需要把用户配置的Hive命令在Linux环境下执行,专门做了一个用户管理界面特地研究了这个不经常用得ProcessBuilder类.所以把自己的学习的资料总结一下. 一.概述      ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法.在J2SE 1.5之前,都是由Process类处来实现进程的控制管理.      每个 ProcessBuilder 实例管理一个进程属性…
自己项目中使用到了 Runtime rt = Runtime.getRuntime(); Process p = rt.exec("query session");p.waitFor(); 结果在不同的windows 操作系统中,程序的运行不一致,在windows server 2008上可以很好的运行,但是到了windows7上去卡死了!!!!!!!!!!!!!!!!!!!!!! p.waitFor() 卡死了或者报错: [ERROR] xxxxx Thread-0 - Cannot…
转自:http://blog.csdn.net/lastsweetop/article/details/3961911 目录(?)[-] javalang 类 Runtime getRuntime exit addShutdownHook removeShutdownHook halt runFinalizersOnExit exec exec exec exec exec exec availableProcessors freeMemory totalMemory maxMemory gc…
 深入研究java.lang.ProcessBuilder类 一.概述       ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法.在J2SE 1.5之前,都是由Process类处来实现进程的控制管理.      每个 ProcessBuilder 实例管理一个进程属性集.它的start() 方法利用这些属性创建一个新的 Process 实例.start() 方法可以从同一实例重复…
关于RunTime类的介绍: /** * Every Java application has a single instance of class * <code>Runtime</code> that allows the application to interface with * the environment in which the application is running. The current * runtime can be obtained from t…
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.ut…
在写批量运行bat工具的时候.想起了之前写的定时小工具里面的运行方法. 使用Runtime.getRuntime().exec方法. Runtime.getRuntime().exec("cmd /c start c:/test.bat") 这样就能够像dos窗体直接运行命令行一样. getRuntime返回Runtime的实例化对象,exec方法是返回Process对象. 查看Process类能够发现: The ProcessBuilder.start() and Runtime.e…
package java.lang; import sun.reflect.CallerSensitive; import sun.reflect.Reflection; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.StringTokenizer; /** * Runtime类,里面可以获得应用运…
RunTime执行命令得到返回值 我们有在好好几篇博客里提到过RunTime,比如 JAVA之旅(二十三)--System,RunTime,Date,Calendar,Math的数学运算 Android源码浅析(五)--关于定制系统,如何给你的Android应用系统签名 而今天同样的,来聊聊RunTime,我们执行这些命令的时候获取到我们的返回值,实际上是比较简单的,但是RunTime的局限性也有点大,很多都没有权限.我们接着看,我现在在终端输入 adb version 看下会输出什么 那我问你…
目录 一.Runtime类 二.Process类 三.ProcessBuilder类 在Java中想调用外部程序,或者执行命令和可运行文件时,网上的典型实例一般都是通过Runtime.getTime().exec()[ java.lang包]去执行相应的操作.看源码才发现还有Process和ProcessBuilder类,来具体看看它们的区别和用法. 一.Runtime类 Runtime类采用的饿汉式单例设计模式(定义了私有类变量和私有构造方法,通过静态方法返回该类的唯一实例).每个 Java…