`
zpball
  • 浏览: 919198 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java虚拟机读写其他进程的数据

    博客分类:
  • J2EE
阅读更多
Java虚拟机读写其他进程的数据

http://axiangtaihe.iteye.com/blog/1647288

使用Runtime对象的exec()方法可以获得其他进程的Process对象,Process对象代表由该Java程序启动的子进程,Process类提供了如下3个方法,用于让程序和其子进程进行通讯。
InputStream getErrorStream():获取子进程的错误流
InputStream getInputStream():获取子进程的输入流
OutputStream getOutputStream():获取子进程的输出流
下面的代码实现了获取子进程的错误输出

import java.io.BufferedReader;
import java.io.InputStreamReader;


public class Test {
	public static void main(String[] args) throws Exception
	{
		
		Process p=Runtime.getRuntime().exec("adb");
		BufferedReader br=new BufferedReader(new InputStreamReader(p.getErrorStream()));
		String str=null;
		while((str=br.readLine())!=null)
		{
			System.out.println(str);
		}

	}
	


	
}


下面程序演示两个Java程序通讯
这个数父进程

import java.io.OutputStream;
import java.io.PrintStream;


public class Test {
	public static void main(String[] args) throws Exception
	{
		Process p=Runtime.getRuntime().exec("java work");
		OutputStream os=p.getOutputStream();
		PrintStream ps=new PrintStream(os);
		ps.println("张译成");
		os.close();
		
		
	}
	


	
}


下面是子进程
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Scanner;

public class work {
	public static void main(String[] args) throws Exception{
		Scanner sc=new Scanner(System.in);
		FileOutputStream fis=new FileOutputStream("work");
		PrintStream ps=new PrintStream(fis);
		System.setOut(ps);
		while(sc.hasNextLine())
		{
			System.out.println(sc.nextLine());
		}
		ps.close();

	}

}
分享到:
评论

相关推荐

    Java虚拟机并发编程

    Java虚拟机并发编程是Java开发中的重要组成部分,它涉及到多线程、同步机制、线程池等关键概念,是高效利用系统资源、提高程序响应速度的关键技术。在Java环境中,并发编程可以帮助开发者创建能够同时执行多个任务的...

    最新Java面试题

    - **Java跨平台原理**:Java的跨平台特性主要得益于字节码文件(`.class`文件)和Java虚拟机(JVM)。Java程序编译成字节码文件后,由不同平台上的JVM解释执行这些字节码文件,从而实现了“一次编写,到处运行”的...

    Android虚拟机

    但是通过Java虚拟机,开发者只需要编写一次代码并编译为字节码形式,就可以在任何支持Java虚拟机的平台上运行。这种方式极大地简化了跨平台开发的过程,并降低了维护成本。 ##### 2.2 Dalvik虚拟机的起源 Dalvik...

    java输入输出流

    ##### Java虚拟机读写其他进程的数据 利用管道流(`PipedInputStream`与`PipedOutputStream`)和Socket通信,Java程序可以实现进程间的数据传输,从而读写其他进程产生的数据。 通过深入理解Java IO的核心概念和...

    java模拟的操作系统

    为了使模拟的程序运行,可能还需要包含一个简单的解释器或虚拟机,能够执行Java字节码。 以上这些知识点构成了一个完整的Java模拟操作系统的基本框架。通过这样的模拟项目,开发者可以深入理解操作系统的工作原理...

    Java编写的windows任务管理器

    在开发这个任务管理器时,Java的跨平台性使得程序可以在不同操作系统上运行,只需一个JVM(Java虚拟机)支持。此外,Java提供了丰富的类库和API,使得开发者能够方便地实现进程管理、UI设计等功能。 在实现过程中,...

    JAVA核心面试知识整理

    JVM(Java虚拟机)是运行Java字节码的虚拟机进程。它将内存划分为若干个不同的数据区域,具体包括程序计数器、虚拟机栈、本地方法栈、堆、方法区等。 2.2.1 程序计数器 程序计数器是线程私有的,记录了线程执行的...

    使用sigar获取系统信息,内存,磁盘,jvm虚拟机等

    本项目主要关注如何使用Sigar库在Java环境下获取系统信息,特别是内存、磁盘和JVM虚拟机的相关数据。 一、获取系统内存信息 在Java中使用Sigar库获取系统内存信息,主要涉及以下几个方面: 1. **总内存**:通过`...

    Java核心技术课堂讲义

    理解如何使用File类,以及InputStream、OutputStream、Reader、Writer及其子类,对于读写文件和其他数据源非常有用。 6. **多线程**:Java提供了内置支持进行并发编程,包括Thread类和Runnable接口。学习如何创建和...

    简要分析Java多进程编程的并发控制

    首先,Java不直接支持原生的多进程编程,因为Java虚拟机(JVM)是单进程的。然而,Java可以通过与其他语言(如C++)的互操作,或者利用操作系统级别的进程间通信(IPC)机制来实现多进程通信。其中一种常见的方式是...

    Java输入输出流

    - **Java虚拟机读写其他进程的数据**:在某些场景下,需要让一个Java进程读取或写入另一个进程的数据。这可以通过使用管道流(`PipedInputStream` 和 `PipedOutputStream`)来实现,这些流可以在两个进程之间建立...

    java中文乱码问题详解--- java中文乱码问题详解

    3. **运行时的编码转换**:Java虚拟机(JVM)在执行`.class`文件时,会将其中的Unicode编码内容解码为对应的本地编码格式进行显示。这一过程需要根据不同的运行环境进行适当的编码转换配置,以确保文本内容能够正确...

    最新版JAVA程序员面试题

    - JRE(Java Runtime Environment):Java运行时环境,它提供了Java虚拟机(JVM)以及Java核心类库等用于运行Java应用的环境。JRE是执行Java程序所必需的环境,它能够运行所有的Java应用程序。 - JVM(Java ...

    java开源包4

    可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL...

    java开源包101

    可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL...

    java开源包6

    可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL...

    java开源包9

    可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL...

    Java面试思维导图.pdf

    JMM是Java虚拟机规范的一部分,定义了共享内存系统中多线程读写操作行为的规范。它解决了Java程序在不同硬件和架构平台下数据一致性问题。synchronize和volatile都与JMM紧密相关,能够保证线程间的安全通信。 ### ...

    java开源包8

    可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL...

    java诊断与调优常用命令jmap、jstack、jstat使用实战.pdf

    4. **jstat (Java Statistics Tool)**: 这个命令主要用于收集Java虚拟机的各种统计数据,如垃圾收集、类加载等。例如,`jstat -gc pid [interval] [count]` 可以监控新老生代的内存使用和垃圾回收频率。使用`jstat -...

Global site tag (gtag.js) - Google Analytics