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。有点想不通,张孝祥老师的就是这样做的,他却得到了结果。暂时记录下来,等有时间在回头看看,希望能找出原因。
分享到:
相关推荐
在Windows操作系统中,读写进程内存通常涉及到以下几个关键知识点: 1. **进程和线程**:进程是资源分配的基本单位,每个进程都有一个独立的虚拟地址空间。线程则是执行单元,共享进程的内存空间。我们所说的读写...
硬盘读写进程监控工具是一种非常实用的系统工具,它能够实时监测计算机中硬盘的读写活动,详细记录每一个进程对硬盘的操作,这对于诊断系统性能问题、优化硬盘使用、排查潜在故障以及确保数据安全都至关重要。...
通过学习这些源码和相关资料,开发者可以掌握如何编写高效、安全的驱动程序,实现对游戏进程的保护,以及如何进行内存的读写操作。同时,这也涉及到操作系统底层原理、硬件交互和安全性等多个复杂领域的知识,是一次...
- **读写冲突**:一个进程写入时,其他进程的读操作可能看到不完整或旧的数据。 5. **解决并发读写问题的策略** - **文件锁**:操作系统提供的机制,如fcntl()(文件控制)或lockf()函数,用于锁定文件,防止多个...
- 要读写进程内存,我们需要打开相应的访问权限。这通常涉及调用Windows API函数`OpenProcess()`,传入适当的访问权限标志,如`PROCESS_VM_READ`和`PROCESS_VM_WRITE`。 3. **映射内存**: - 在C#中,我们可以...
在IT领域,特别是操作系统与进程管理方面,“读写进程的内容”这一主题涵盖了多个核心概念和技术细节,对于理解和操作操作系统中的进程具有重要意义。本文将深入解析标题和描述中提及的知识点,包括读写进程的关键...
在易语言中,“取外部进程数据”是一项重要的功能,它允许程序员获取运行在系统中的其他进程的信息,包括内存数据、进程状态等。 取外部进程数据在很多场景下都是必要的,例如系统监控、性能分析、调试工具等。在...
4. 如果修改其他进程的内存,必须确保有相应的权限,并且理解可能引发的后果。 对于进程管理,应当: 1. 慎重处理进程权限,避免无权限操作导致异常。 2. 跟踪和管理进程生命周期,确保进程启动和结束有序。 3. ...
为了确保数据的一致性和同步,可能需要使用互斥锁(mutex)或者信号量(semaphore)等同步机制,防止两个进程在同一时刻读写共享内存,导致数据混乱。在x1.c和x2.c中,可能需要包含`<semaphore.h>`来使用信号量,以...
在易语言中,取外部进程数据是一项重要的功能,允许程序获取其他正在运行进程的信息,如内存数据、窗口句柄等,这对于系统监控、数据分析和调试等应用场景十分有用。 该压缩包"易语言源码易语言取外部进程数据源码....
在IT领域,尤其是编程和系统调试中,"VC++修改其他进程内存数据"是一个高级话题,涉及到进程间通信(IPC)和系统级别的内存操作。这个主题主要关注如何使用Microsoft Visual C++(VC++)作为开发工具,通过编程手段...
《ProcessActivityView:进程文件读写监控利器》 在信息技术领域,尤其是在系统管理和软件调试中,了解进程对文件的读写行为是至关重要的。ProcessActivityView是一款实用工具,专为监视计算机中进程对文件系统的...
在C#编程中,开发游戏辅助工具或修改游戏内存数据时,经常需要用到内存多级指针读写和进程操作。这些技术主要用于与运行中的游戏进程进行交互,获取或修改其内部状态,例如角色属性、游戏资源等。下面将详细介绍这两...
然而,在某些情况下,比如调试、监控或者安全分析,我们可能需要读取其他进程的内存数据。这就是跨进程读取内存的用武之地。 在Windows操作系统中,实现跨进程读取内存通常需要使用以下API: 1. **OpenProcess**:...
共享内存允许不同的进程访问同一块内存区域,这意味着数据可以在进程之间直接交换,而无需通过其他中间媒介。在Windows系统中,我们可以使用`CreateFileMapping`和`MapViewOfFile`函数来创建和映射共享内存。而在...
### DM7 数据守护与读写分离集群知识点解析 #### 一、系统特性及主要改进 **1.1 主要特性** - **实时主备:** 实现了主库与备库之间的实时同步复制,确保数据的一致性和高可用性。 - **MPP 主备:** 支持大规模...
- **问题三**:读写进程之间数据共享导致不一致性。 - 解决方案:利用互斥锁或信号量确保数据的一致性。 #### 三、测试数据与程序运行分析 在设计中提到了具体的测试场景,例如程序主界面、输入进程过程以及加载...
《ProcessActivityView v1.16:Windows系统进程文件读写监控详解》 ProcessActivityView是一款强大的系统监控工具,主要用于追踪和记录Windows操作系统中各个进程对文件系统的读写活动。这款实用工具,版本号v1.16...
- 这些函数依赖于进程上下文,因此不适合在中断处理程序或非进程相关的代码中执行。如果必须在这样的环境中操作文件,可以考虑创建内核线程来执行这些任务。 总结来说,Linux内核中的文件操作涉及到一系列内核特有...