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 读写操作大文件 BufferedReader和RandomAccessFile
    hibernate官网文档
    阿里云centos怎么用xshell5登陆
    STM8L使用外部8M HSE
    vscode函数注释添加【转载】
    某个通信的异常判断存在于两个任务中时计算通信超时的一种思路
    STM32F0芯片读保护
    FrameworkCubeMX.gpdsc missing的问题
    git忽略已经提交的文件【转载】
  • 原文地址:https://www.cnblogs.com/chengliu/p/3636349.html
Copyright © 2011-2022 走看看