zoukankan      html  css  js  c++  java
  • 进程间通信基础

    进程间通信大致可以分为本地进程间通信网络进程间通信
    本地进程间通信有:管道和FIFO(命令管道)、消息队列、信号量(semaphore)以及共享存储
    网络进程间通信:套接字(socket)和STREAMS

    1.管道和FIFO(命名管道)

    最适合在进程之间实现生产者/消费者的交互。有些进程向管道中写入数据,而另外一些进程则从管道中读出数据。

    1).在Unix的命令shell中,可以使用“|”操作符来创建管道。
    例如,下面的语句通知shell创建两个进程,并使用一个管道把这两个进程连接在一起:
    $ls | more
    第一个进程(执行ls程序)的标准输出被重定向到管道中;第二个进程(执行more程序)从这个管道中读取输入。
    注意,执行下面这两条命令也可以得到相同的结果;
    $ls > temp
    $more < temp
    第一个命令把ls的输出重定向到一个普通文件中;接下来,第二个命令强制more从这个普通文件中读取输入。当然,通常使用管道比使用临时文件更方便。

    2).进程通过执行mknod系统调用创建一个FIFO.FIFO一旦被创建,就可以使用普通的open()、read()、write()、close()系统调用FIFO。

    2.消息队列
    允许进程在预定义的消息队列中读和谐消息来交换消息。Linux内核提供两种不同的消息版本:System V IPC消息和POSIX消息。
    3.信号量
    4.共享存储
    允许进程通过共享内存块来交换信息。在必须共享大量数据的应用中,这可能是最高效的进程通信方式。
    5.套接字
    允许不同计算机上的进程通过网络交换数据。套接字还可以用作相同主机上的进程之间的通信工具。


    参考文档:

    UNIX坏境高级编程

  • 相关阅读:
    Java学习日记Ⅰ
    docker 安装redis
    maven 打包 把第三方包也打进去
    wiki 配置数据源 编码要是utf8 不能是utf8mb4
    SCFT用公钥登录
    配置tomcat重启脚本
    tomcat
    centos7 搭建rabbitmq服务 3.7.15
    安装openoffice
    tomcat 日期切分
  • 原文地址:https://www.cnblogs.com/chengliu/p/3636349.html
Copyright © 2011-2022 走看看