Linux中写进程与读进程的通信(shm、sem)

  • Post author:
  • Post category:linux





工作原理示意图:

进程通过shared memory读写



简单说明:


eNB process


是写进程,


UE process


是读进程。首先在他们之间设置一块


shared memory


,其中前三个变量用于管理这个


shared memory




shmid


由三个信号量组成:


  • 互斥信号量


    SEM_MUTEX


    :保证


    shared memory


    不会同时被两个进程访问。

  • 可读资源信号量


    SEM_RD


    :当前


    shared memory


    中已被


    eNB process


    写好但还没有被


    UE process


    读取的


    shm_unit


    数量。初始化为


    shm_unit


    的大小


    SHMLEN




  • 可写资源信号量


    SEM_WR


    :当前


    shared memory


    中已被


    UE process


    读取但还没有被


    eNB process


    改写的


    shm_unit


    数量。初始化为


    0




shm_st


中的


shm_unit


是一个环形缓冲区,当前写和读的指针分别是


wr_ptr





rd_ptr


,均初始化为


0


。每写完一个


unit





wr_ptr


自加


1


。每读完一个


unit





rd_ptr


自加


1


。当这两个指针等于


shm_unit


的大小


SHMLEN


时,将它们重置为


0




程序清单:



版权声明:本文为copal原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。