package IO;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
public class TestInOut implements Runnable {
private Process p = null;
public TestInOut() {
try {
p = Runtime.getRuntime().exec("java MyTest");
new Thread(this).start();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void send() {
try {
OutputStream ops = p.getOutputStream();
while (true) {
ops.write("help\r\n".getBytes());
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void run() {
try {
InputStream in = p.getInputStream();
BufferedReader bfr = new BufferedReader(new InputStreamReader(in));
while (true) {
String strLine = bfr.readLine();
System.out.println(strLine);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] args) {
TestInOut t = new TestInOut();
t.send();
}
}
class MyTest {
public static void main(String[] args) throws IOException {
while (true) {
System.out.println("hi:"
+ new BufferedReader(new InputStreamReader(System.in))
.readLine());
}
}
}
在java程序中启动一个新的进程,该进程成为该程序的子进程。启动子进程可以使用Runtime.gerRuntime().exec
(string command)方法启动。参数是启动的具体命令,返回一个Process对象。通过这个process对象可以获得子进
程的输入输出流。从而实现父进程和子进程的通信。创建的子进程没有自己的终端或控制台。子进程的所有标准 io
(即 stdin,stdout,stderr)操作都将通过三个流重定向到父进程。父进程使用这些流来提供到子进程的输入和获得
从子进程的输出。调用Process的getOuputStream和getInputStream方法可以得到子进程以管道流的形式连接到
父进程的一个输出流和输入流对象。子进程从标准输入读取到的内容是父进程通过输出流对象写入管道的数据,子进程
写入标准输出的数据通过管道传送到了父进程的输入流对象中,父进程从这个输入流对象中读取到的内容就是子进程写
入到标准输出的数据。
我试验了以上代码,输出的结果都是null。有点想不通,张孝祥老师的就是这样做的,他却得到了结果。暂时记录下来,等有时间在回头看看,希望能找出原因。
分享到:
相关推荐
根据进程PID读写指定进程的内存数据
VB6调用WINAPI读写其他应用程序文本框内容,包含了一些访问数据库,调用webservice,读写XML文档,读写EXCEL文档的代码。
可以在一个程序中修改其他基础的任何内存地址数据
(4)可读取样例数据(要求存放在外部文件中),进行读者/写者、进入内存时 间、读写时间的初始化; (5)要求将运行过程用可视化界面动态显示,可随时暂停,查看阅览室读者/ 写者数目、读者等待队列、写者等待队列...
在Windows2000环境下,创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件(后面有介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先的读者-写者...
C#操作共享内存读写工程、C#操作共享内存读写工程、C#操作共享内存读写工程
获取KdVersionBlock,从内核空间拷贝到用户空间,或者从用户空间拷贝到用户空间,但是不能从用户空间拷贝到内核空间,从物理地址拷贝到用户空间,不能写到内核空间,读写处理器相关控制块,读写端口,读写总线数据,...
用独立的 TThread 单元 在同一个进程中 将 一份数据很多的文件 分成 两块 同事来读取。 提快速度。
测试数据文件包括 n行测试数据,分别描述创建的n个线程是读者还是写者,以及读写操作的开始时间和持续时间。每行测试数据包括四个字段,每个字段间用空格分隔。第1个字段为正整数,表示线程的序号。第2个字段表示...
基于gdal的影像读写,读写采用分块读写的方式,添加了进度条来显示运行进度,可以支持海量数据的tif影像,程序采用了多线程的方式来提高速度,运行过程中可以随意拖动对话框。
使用信号量及P、V操作实现子进程之间通过共享内存通信的读写同步,如实验图5-1所示。要求如下: 生产者进程消费者进程A消费者进程B父进程sum 生产者进程 消费者进程A 消费者进程B 父进程 sum 实验图 5-1 请参考附件...
4) 在原来程序的基础上,加入缓冲区的写互斥控制功能,模拟多个进程存取一个公共缓冲区,当有进程正在写缓冲区时,其他要访问该缓冲区的进程必须等待,当有进程正在读取缓冲区时,其他要求读取的进程可以访问,而...
同样,管道已经满时,进程再试图写管道,在其它进程从管道中移走数据之前,写进程将一直阻塞。管道主要用于不同进程间通信。 管道创建与关闭 创建一个简单的管道,可以使用系统调用pipe()。它接受一个参数,也...
每个线程按相应测试数据文件的要求进行读写操作。用信号量机制分别实现读者优先和写者优先问题。 1、读者-写者问题的读写操作限制(包括读者优先和写者优先) 1)写-写互斥:不能有两个写者同时进行写操作 2)读-写...
可以监视指定进程的内存写操作,方便对其它软件的分析
1.1【并行计算】在需要进行大规模数据处理或计算密集型任务时,使用多进程可以显著提高程序的运行速度。如,计算一组数字的平方和,将任务分配给多个进程并行计算,然后汇总结果。 1.2【IO密集型任务】在需要大量IO...
子父进程共享内存
快应用开发
资源包括进程同步经典算法的读写者问题,读者优先的全部代码机器附带的相关文件。
分别用单进程和多进程的模式实现python调用arcgis模块,上传的代码执行的功能包括:单进程使用map映射机制执行、多进程池方式执行、读写arcgis的ascii栅格数据文件、窗口分析提取栅格快的边缘栅格以及调用若干arcgis...