在某些情况下,我们需要一个进程(可视为应用程序)调用另外一个进程,两个进程之间能够传递一些参数信息;

提高信号通信的效率,传递大量数据,减轻程序编制的复杂度。

提供三种方式:

1.共享内存模式

2.消息传递模式

3.共享文件模式

最为快捷有效的方式之一,UNIX系统中常被使用。内存共享区的互斥要通过其它机制实现;数据的发送方不关心数据由谁接收,数据的接收方也不关心数据是由谁发送的,存在安全隐患。

消息传递

message-passing:通过操作系统的相应系统调用进行消息传递通讯。分为直接和间接两种:

直接通信方式:点到点的发送

Send (DestProcessName, Message);
Receive (SourceProcessName, Message);

基本思想:进程在发送和接收消息时直接指明接收者或发送者进程ID。

缺点:必须指定接收进程ID。(UNIX的信号机制类似这种形式)

间接通信方式:以信箱为媒介进行传递,可以广播

Send (MailBox, Message);
Receive (MailBox, Message);

间接通信方式(信箱命名法)

基本思想:系统为每个信箱设一个消息队列,消息发送和接收都指向该消息队列。

缺点:必须有一个通讯双方共享的一个逻辑消息队列( UNIX的PIPE,FIFO及IPC消息传递机制都属于这种形式),使用时消息发送者约定写方式打开信箱,消息接受者约定读方式打开信箱或同时读写打开。

优点:很容易建立双向通讯链(只要对信箱说明为读写打开)。


这里通过消息传递方式实现的一种进程间通讯方式

java 两个进程通讯 两个进程间的通信_消息传递

 从主进程点击子进程,启动

java 两个进程通讯 两个进程间的通信_java 两个进程通讯_02

点击信息回传后

java 两个进程通讯 两个进程间的通信_进程_03

 

java 两个进程通讯 两个进程间的通信_消息传递_04