博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java父子进程通信
阅读量:6188 次
发布时间:2019-06-21

本文共 1740 字,大约阅读时间需要 5 分钟。

1.利用进程的管道通信传输流

2.子进程没有控制台,正常测试的时候也是没办法看到子进程的输出的,需要传到主线程

3.测试主进程传参给子进程再传回来

4.父进程启动子进程只要执行runtime.exec(cmd)就行了,但在linu下面,需要传入数组命令,否则一些特定字符会被当做参数

5.比如"test.sh >> test.log",这种就不能exec直接执行,传入数组:{"/bin/sh","-c",cmd}

子进程:

import java.io.*;/** * Created by garfield on 2016/11/1. */public class TestCommand {    public static void main(String[] args) throws IOException, InterruptedException {        BufferedReader s = new BufferedReader(new InputStreamReader(System.in));        String line ;        StringBuffer all = new StringBuffer();        while((line = s.readLine()) != null){            all.append(line);        }        System.out.println(all);        s.close();    }}

父进程:

import java.io.*;/** * Created by garfield on 2016/11/9. */public class TestCommunication {    public static void main(String[] args) throws IOException, InterruptedException {        Runtime run = Runtime.getRuntime();        String java = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";        String cp = "\"" + System.getProperty("java.class.path");        cp += File.pathSeparator + ClassLoader.getSystemResource("").getPath() + "\"";        String cmd = java + " -cp " + cp + " com.TestCommand";        Process p = run.exec(cmd);        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));        bw.write("999999");        bw.flush();        bw.close();        BufferedInputStream in = new BufferedInputStream(p.getInputStream());        BufferedReader br = new BufferedReader(new InputStreamReader(in));        String s;        while ((s = br.readLine()) != null)            System.out.println(s);    }}

父进程将99999传给子进程,又在控制台输出:

999999

 

转载于:https://www.cnblogs.com/garfieldcgf/p/6150196.html

你可能感兴趣的文章
[Android]SIM字段EF_SUME(6F54) 可用作STK app name
查看>>
聊聊并发(十)生产者消费者模式
查看>>
关于qstring转char乱码问题。
查看>>
Kurento源码安装(Ubuntu 14.04和 Ubuntu 16.04)
查看>>
Redis在Php项目中的实际应用场景
查看>>
面试题(1)
查看>>
【第3章】数据库的基本操作
查看>>
MySQL备份原理详解
查看>>
分别查找主机占用CPU和占用内存最大的进程,要求能查出进程PID,启动目录,启动命令,占用文件描述符数量,占用端口...
查看>>
android 清除缓存cache
查看>>
powerdesigner连接数据库的问题
查看>>
git-git基本使用
查看>>
Spring Cloud Stream如何处理消息重复消费?
查看>>
CSS3 Media Queries 详解
查看>>
JavaLib | 使用AOP帮你记录日志
查看>>
Hibernate与 MyBatis的比较
查看>>
DNS劫持原理与实现
查看>>
努力学习
查看>>
乐观锁和悲观锁初步认识
查看>>
MFC中的几个常用类——CWinApp
查看>>