Java的Process对象能不能在执行命令之后一段时间再去获取InputStream?

问题描述

用Runtime.getRuntime().exec(cmd)执行命令获得了一个Process对象,但这个时候命令没有输出,要执行了其它操作之后才会有一连串的结果输出(命令就像一个服务器程序一样等待操作)。在执行了其它操作之后,再去调用Process对象的getInputStream()方法会得到那一连串的吗? 问题补充:jobar 写道

解决方案

没问题,可以的; Process pr = Runtime.getRuntime().exec(finalCommand); BufferedReader br_in = null; try { br_in = new BufferedReader(new InputStreamReader(pr.getInputStream())); String buff = null; while ( (buff = br_in.readLine()) != null) { System.out.println("stdout: " + buff); try { Thread.sleep(100); } catch (Exception e) {} } br_in.close(); } catch (IOException ioe) { System.out.println("Error printing process output."); ioe.printStackTrace(); } finally { try { br_in.close(); } catch (Exception ex) {} }

时间: 2024-11-16 17:12:34

Java的Process对象能不能在执行命令之后一段时间再去获取InputStream?的相关文章

Sun Java Web服务器远程可执行命令漏洞

Sun Java Web服务器远程可执行命令漏洞漏洞发布时间:2000-7-13 17:41:00漏 洞 描 述:在Solaris and Windows NT的Sun Java Web Server默认安装设置下.通过公告版的样板程序的漏洞,可以远程执行任意命令.漏洞测试方法如下:下面的例子将显示如何上载和执行该代码,而在服务器上显示"Hello World".输入下面的JSP代码将打印出"Hello World":<% String s="Hel

linux-Linux下系统调用execl会等待一段时间才执行指定的可执行程序?

问题描述 Linux下系统调用execl会等待一段时间才执行指定的可执行程序? 程序编译运行环境: Red Hat Enterprise Linux Server release 6.4 64bits 问题描述: fork子进程后,使用execl或者execlp调用可执行程序会出现等待一段时间才进入可执行程序,为什么会出现等待,有猿友遇到这个问题吗?很是奇怪,并非每一次都会出现这样的问题,如果重启电脑后,就不会出现,但是运行一段时候后又会出现. 主要代码: Result* ALGJob::com

解析Java程序中对象内存的分配和控制的基本方法_java

一.对象与内存控制的知识点 1.java变量的初始化过程,包括局部变量,成员变量(实例变量和类变量). 2.继承关系中,当使用的对象引用变量编译时类型和运行时类型不同时,访问该对象的属性和方法是有区别的. 3.final修饰符特性. 二.java变量的划分与初始化过程 java程序的变量大体可以分为成员变量和局部变量,成员变量可以分为实例变量(非静态变量)和类变量(静态变量),一般我们遇到的局部变量会在下列几种情况中出现: (1)形参:在方法签名中定义的局部变量,由调用方为其赋值,随着方法结束消

Java反序列化漏洞执行命令回显实现及Exploit下载

原文地址:http://www.freebuf.com/tools/88908.html   本文原创作者:rebeyond 文中提及的部分技术.工具可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用! 0×00 前言 前段时间java 的反序列化漏洞吵得沸沸扬扬,从刚开始国外某牛的一个可以执行OS命令的payload生成器,到后来的通过URLClassLoader来加载远程类来反弹shell.但是后来公司漏扫需要加规则来识别这种漏洞,而客户的漏扫又时常会工作在纯内网的环境下,因此远程加载

java线程问题:怎样多次执行

问题描述 java线程问题:怎样多次执行 有三个线程,第一个执行1到5递增,第二个执行6-10递增,第三个11-15.并且每个线程执行5次.我们老师给了一个类,但是我不会写方法,还请大神帮帮忙. 解决方案 我网上百度到了答案,谢谢各位了.可能是我没说明白,现在我从新说明问题,及代码.问题:启动三个线程打印递增数字,线程1先打印12345 然后是线程2打印678910然后是线程3打印出1112131415.接着在由线程1打印1617181920.以此类推打印到75.public class Num

详解Java编程中对象的序列化_java

1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长.但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象.Java对象序列化就能够帮助我们实现该功能. 使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象.必须注意地是,对象序列化保存的是对象的"状态",

java循环体里边创建对象,它的执行过程是怎样的?

问题描述 java循环体里边创建对象,它的执行过程是怎样的? public class Test { public static void main(String[] args) { for(int i=0;i<10;i++) { Object obj = new Object(); } } } 比如说上边这一段代码,越看越不对劲了,它难道是在main方法栈中先后创建了10个引用叫obj?然后每个obj指向不同的new出来的对象? 解决方案 单步调试下就知道了,正常的逻辑是这样的,可能编译器优化

对Java的面对对象编程中对象和引用以及内部类的理解_java

最近利用下班的时候看了看的think in java感觉再看 和第一次看大不一样 接下来说一下java中对象和引用的关系,以及内部类的概念.1.java中一切都是对象 在java中是什么来操作者对象呢?答案是引用,这就好比C或者C++中的指针. 如果用拥有一个引用,那么此时你必须让其和一个对象关联在一起,否则这个引用并不会像你想象的那样任由你的控制,例如你创建了一个String的引用: String s ; 而此时并未与任何对象关联,如果此时你去做一些操作,如调用String的一些方法,肯定是会

java网络传递对象时该对象继承父类的属性在网络接收端接收该属性值总是null,why?

问题描述 java网络传递对象时该对象继承父类的属性在网络接收端接收该属性值总是null,why? //=========================== 情形一: ===============================//在网络上传递User1类对象时info属性值在网络的另一端能够接收到! public class User1 implements Serializable { public String info = null; public String userName =