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

java linuc进程间通信对比

阅读更多
读《unix网络编程第二卷进程通信》
1.管道
2.消息队列
3.信号量
4.共享内存
这些在java中怎么实现?
如果是管道,参考http://www.iteye.com/topic/156804,看下面代码,
注意把“注意这里!!!!!!!!”的i换成256实验一下效果
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class CommunicateWhitPiping {
	public static void main(String[] args) {
		PipedOutputStream pos = new PipedOutputStream();
		PipedInputStream pis = new PipedInputStream();
		try {
			pos.connect(pis);//将管道输入流与输出流连接 此过程也可通过重载的构造函数来实现
		} catch (IOException e) {
			e.printStackTrace();
		}
		Producer p = new Producer(pos);//创建生产者线程
		Consumer c = new Consumer(pis);//创建消费者线程
		p.start();//启动线程
		c.start();
	}
}
class Producer extends Thread {//生产者线程(与一个管道输入流相关联)
	private PipedOutputStream pos;
	public Producer(PipedOutputStream pos) {
		this.pos = pos;
	}
	public void run() {
		int i = 99;//256,257,注意这里!!!!!!!!
		try {
			pos.write(i);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
class Consumer extends Thread {//消费者线程(与一个管道输入流相关联)
	private PipedInputStream pis;
	public Consumer(PipedInputStream pis) {
		this.pis = pis;
	}
	public void run() {
		try {
			System.out.println(pis.read());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

如果是c里面
看unpv22e/pipe/mainpipe.c
#include    "unpipc.h"
void    client(int, int), server(int, int);
int
main(int argc, char **argv)
{
    int     pipe1[2], pipe2[2];
    pid_t   childpid;
    Pipe(pipe1);    /* create two pipes */
    Pipe(pipe2);
    if ( (childpid = Fork()) == 0) {        /* child */
        Close(pipe1[1]);
        Close(pipe2[0]);

        server(pipe1[0], pipe2[1]);
        exit(0);
    }
        /* 4parent */
    Close(pipe1[0]);
    Close(pipe2[1]);
    client(pipe2[0], pipe1[1]);
    Waitpid(childpid, NULL, 0);     /* wait for child to terminate */
    exit(0);
}

-------------------------------------
共享内存参考http://coach.iteye.com/blog/738214
分享到:
评论

相关推荐

    Android内核与标准Linux内核对比分析.pdf

    与标准Linux内核相比,Android内核在文件系统、进程间通信机制和内存管理方面有所不同。 在文件系统方面,Android引入了专为闪存存储优化的YAFFS2文件系统,以适应移动设备的存储需求。YAFFS2的设计使得其更容易...

    dotnet C# 在 Linux 系统设置或获取音量以及变更音量收到通知.rar

    在Linux系统中,使用C#进行音量控制和监听音量变化可能会涉及到多个技术层面,包括跨平台.NET框架(如Mono或.NET Core)、Linux音频框架(如ALSA或PulseAudio)以及进程间通信(IPC)来接收音量变化的通知。...

    Linux平台上的组件开发技术.pdf

    2. **Mozilla平台下的XPCom组件开发技术**:XPCom是Mozilla项目的一部分,允许在不同进程间共享组件,提供了跨平台的组件交互机制,适用于构建复杂的多层应用程序。 3. **CORBA组件开发技术**:CORBA(Common ...

    Android+Java面试题

    - AIDL:理解进程间通信(IPC)原理,使用AIDL实现跨进程通信。 9. **Android组件** - Fragment:在Activity中使用Fragment,理解Fragment的生命周期。 - ContentProvider:作为数据共享的桥梁,提供统一的数据...

    书籍集合C.C++、java

    - **Unix/Linux系统编程**:包括文件和目录操作、进程间通信(IPC)、信号处理等。 - **TCP/IP网络编程**:客户端/服务器模型、套接字编程、HTTP协议解析等。 - **跨平台编程**:如何将Windows平台下的C++代码移植到...

    Android与J2ME平台间即时通信的研究与实现

    本篇文章详细分析了实现Android与J2ME(Java 2 Platform, Micro Edition)平台间即时通信的关键技术,并且介绍了如何在模拟环境下实现不同平台终端设备间的即时通信功能。 #### 关键词 - Android - J2ME - 即时...

    XJava集群快速升级1

    3. **服务器和网络通信**:升级前需要确保本机能够访问集群所有服务器的IP及通讯端口,这是分布式系统升级的基础,确保各节点间通信正常。 4. **分析中心**:通过访问`http://127.0.0.1/项目名/analyses`页面,可以...

    安卓Android源码——365MobileSecretary v1.0.6(365手机助手AIDL).zip

    【安卓Android源码——365MobileSecretary v1.0.6(365手机助手AIDL)】 在深入解析365...通过分析源码,开发者可以掌握更多关于服务设计、数据传输和进程间通信的知识,这对于提高Android开发技能大有裨益。

    计算机软件-商业源码-实例070-使其他的程序暂停(1).zip

    4. **进程间通信(IPC)**:当需要一个进程通知另一个进程时,就需要使用进程间通信。常见的IPC方式有管道、消息队列、共享内存、套接字等。在本实例中,可能通过某种IPC机制来控制目标程序的暂停。 5. **操作系统...

    Java开发岗面试知识点解析

    它通过内存屏障和指令重排序来实现线程间通信。 (四)JVM 内存管理 1. Java 内存模型是如何划分的? 答:JVM 内存分为堆内存、栈内存、方法区、程序计数器和本地方法栈。其中,堆内存存放对象实例,栈内存存放基本...

    3年java面试经验

    **多线程**:了解线程的基本概念、线程间通信、线程池的使用等。多线程环境下如何确保数据一致性是常见问题之一。 **缓存方案**:如Redis、Memcached等。了解缓存的工作原理、应用场景及如何处理缓存与数据库之间的...

    Open, Mobile, and Linux: Android G1

    - **进程间通信(IPC)**:“Well-defined API for inter-process communication.” Android提供了完善的进程间通信API,使得不同应用程序能够安全高效地进行交互。 - **良好的边界设定**:“Translation: Good ...

    2021java互联网架构师学习路线.pdf

    4. **JMM(Java内存模型)**:理解Java内存模型的工作原理,确保线程间的正确通信。 5. **Linux内核与操作系统**:学习内存映射、内核同步、进程管理等操作系统基础知识。 四、面试算法篇 1. **数据结构与算法**:...

    Android_Binder设计与实现_-_设计篇

    深入理解Binder的设计原理及其与传统IPC的对比,对于把握进程间通信的实现细节及性能优化至关重要。 #### Binder通信模型与协议 Binder的设计围绕Client-Server模型展开,其中服务器端负责提供服务,客户端则请求...

    安卓串口Socket通讯USB驱动jni相关-通过jni调用C实现高斯模糊效果提高了实现速度.rar

    3. Socket通信:Socket是网络通信的基础,它提供了一种进程间通信(IPC,Inter-Process Communication)的方式。在Android中,串口Socket通信常用于设备间的通信,例如Android设备与外部硬件设备之间的数据传输。...

    Linux多线程服务端编程:使用muduo C++网络库

    3.4进程间通信只用TCP . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 65 3.5多线程服务器的适用场合. . . . . . . . . . . . . . . . .. . . . . . . . . . 67 3.5.1必须用单线程的场合. . . . . . . ....

    大数据课程体系 (2).pdf

    - **Socket网络技术**:用于实现进程间通信,创建TCP/UDP连接,发送和接收数据。 - **RegularExpression**:正则表达式,用于字符串的匹配、查找、替换等操作。 - **Java反射技术**:运行时动态访问和修改类的...

    蚂蚁金服面试分享.txt

    - 进程管理:进程间通信机制(IPC)的实现方式。 - **设计模式** - 单例模式:单例模式的实现方式及其应用场景。 - 工厂模式:工厂模式的设计思想及其优缺点。 - 观察者模式:观察者模式的应用场景及其优势。 ...

Global site tag (gtag.js) - Google Analytics