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坏境高级编程

  • 相关阅读:
    Chrome调试工具常用功能
    把读取sql的结果写入到excel文件
    Android逆向破解:Android Killer使用
    鸭子类型和猴子补丁
    Scrapy同时启动多个爬虫
    命令注入
    理解RESTful架构
    程序员需要谨记的九大安全编码规则
    10条建议分享:帮助你成为与硅谷工程师一样优秀的程序员
    代码审计:是安全专家都应该掌握的技能
  • 原文地址:https://www.cnblogs.com/chengliu/p/3636349.html
Copyright © 2011-2022 走看看