Linux进程间通信之POSIX信号量

Posix信号量 信号量是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。Posix有名信号量:使用Posix IPC名字标识,可用于进程或线程间的同步。Posix基于内存的信号量:存放在共享内存区中,可用于进程或线程间的同步。System V信号量:在内核中维护,可用于进程或线程间的同步。只考虑不同进程间的同步。首先考虑二值信号量: 其值或为0或为1的信号量。如下图所示:图中画出该信号量是由内核来维护的(对于SystemV信号量是正确的),其值可以是0或1。Posix信号量不必在内核中维护。 阅读详情

当多个进程同时访问系统上的某个资源的时候,就需要考虑进程的同步问题,以确保任一时刻只有一个进程可以拥有对资源的独占式访问。POSIX信号量不仅可以用于进程之间的同步,也可以用于线程之间的同步。


概述

SUSv3规定了两种类型的POSIX信号量。

  • 命名信号量:这种信号量拥有一个名字。通过使用相同的名字调用sem_open(),不相关的进程能够访问同一个信号量。
  • 未命名信号量:这种信号量没有名字,相反,它位于内存中一个预先商定的位置处。未命名信号量可以在进程之间或一组线程之间共享。当在进程之间共享时,信号量必须位于一个共享内存区域中。当在线程之间共享时,信号量可以位于被这些线程共享的一块内存区域中(如在堆上或在一个全局变量中)。
  • POSIX信号量是一个整数,其值不能小于0。


命名信号量

要使用命名信号量必须要使用下列函数。

  • sem_open()函数打开或创建一个信号量并返回一个句柄以供后续调用使用,如果这个调用会创建信号量的话还会对所创建的信号量进行初始化。
  • sem_post()和sem_wait()函数分别递增和递减一个信号量值。
  • sem_getvalue()函数获取一个信号量的当前值。
  • sem_close()函数删除调用进程与它之前打开的一个信号量之间的关联关系。
  • sem_unlink()函数删除一个信号量名字并将其标记为在所有进程关闭该信号量时删除该信号量。
打开一个命名信号量

sem_open()函数创建和打开一个新的命名信号量或打开一个既有信号量。

#include<fcntl.h>
#include<sys/stat.h>
#include<semaphore.h>

sem_t *sem_open(const char *name,int oflag,mode_t mode,unsigned int value);

name标识出了信号量。
oflag参数是一个位掩码,它确定了是打开一个既有信号量还是创建并打开一个新信号量。如果oflag为0,那么将访问一个既有信号量。如果在oflag中指定了O_CREAT,并且与给定的name对应的信号量不存在,那么就创建一个新的信号量。如果在oflag中同时指定了O_CREAT和O_EXCL,并且与给定的name对应的信号量已经存在,那么sem_open()就会失败。
如果sem_open()被用来打开一个既有信号量,那么调用就只需要两个参数。但如果在flags中指定了O_CREAT,那么就还需要另外两个参数:mode和value。

  • mode参数是一个位掩码,它指定了施加于新信号之上的权限。这个参数能取的位值与文件上的位值是一样的并且与open()一样,mode参数中的值会根据进程的umask来取掩码。
  • value参数是一个无符号整数,它指定了新信号量的初始值。

不管是创建一个新信号量还是打开一个既有信号量,sem_open()都会返回一个指向一个sem_t值的指针,而在后续的调用中则可以通过这个指针来操作这个信号量。
SUSv3声称当在sem_open()的返回值指向的sem_t变量的副本上执行操作时结果是未定义的。换句话说,像下面这种使用sem2的做法是不允许的。

sem_t *sp,sem2;
sp=sem_open(...);
sem2=*sp;
sem_wait(&sem2);

通过fork()创建的子进程会继承其父进程打开的所有命名信号量的引用。在fork()之后,父进程和子进程就能够使用这些信号量来同步它们的动作了。

关闭一个信号量

当一个进程打开一个命名信号量时,系统会记录进程与信号量之间的关联关系。sem_close()函数会终止这种关联关系(即关闭信号量),释放系统为该进程关联到该信号量之上的所有资源,并递减引用该信号量的进程数。

#include<semaphore.h>

int sem_close(sem_t *sem);

打开的命名信号量在进程终止或进程执行了一个exec()时会自动被关闭。
关闭一个信号量并不会删除这个信号量,而要删除信号量则需要使用sem_unlink()。

删除一个命名信号量

sem_unlink()函数删除通过name标识的信号量并将信号量标记成一旦所有进程都使用完这个信号量时就销毁该信号量。

#include<semaphore.h>

int sem_unlink(const char *name);
等待一个信号量

sem_wait()函数会递减(减小1)sem引用的信号量的值。

#include<semaphore.h>

int sem_wait(sem_t *sem);

如果信号量的当前值大于0,那么sem_wait()会立即返回。如果信号量的当前值等于0,那么sem_wait()会阻塞直到信号量的值大于0为止,当信号量大于0时该信号量值就被递减并且sem_wait()会返回。
如果一个阻塞的sem_wait()调用被一个信号处理器中断了,那么它就会失败并返回EINTR错误。

sem_trywait()函数是sem_wait()的一个非阻塞版本。

#include<semaphore.h>

int sem_trywait(sem_t *sem);

如果递减操作无法立即被执行,那么sem_trywait()就会失败并返回EAGAIN错误。

发布一个信号量

sem_post()函数递增(增加1)sem引用的信号量的值。

#include<semaphore.h>

int sem_post(sem_t *sem)l

如果在sem_post()调用之前信号量的值为0,并且其他某个进程(或线程)正在因等待递减这个信号量而阻塞,那么该进程会被唤醒,它的sem_wait()调用会继续往前执行来递减这个信号量。如果多个进程(或线程)在sem_wait()中阻塞了,并且这些进程的调度采用的是默认的循环时间分享策略,那么哪个进程会被唤醒并允许递减这个信号量是不确定的。
POSIX信号量仅仅是一种同步机制,而不是一种排队机制。

获取信号量的当前值

sem_getvalue()函数将sem引用的信号量的当前值通过sval指向的int变量返回。

#include<semaphore.h>

int sem_getvalue(sem_t *sem,int *sval);

如果一个或多个进程(或线程)当前正在阻塞以等待递减信号量的值,那么sval中的返回值将取决于实现。在Linux下,返回0。
注意在sem_getvalue()返回时,sval中的返回值可能已经过时了。


未命名信号量

未命名信号量(也被称为基于内存的信号量)是类型为sem_t并存储在应用程序分配的内存中的变量。通过将这个信号量放在由几个进程或线程共性的内存区域中就能够使这个信号量对这些进程或线程可用。
操作未命名信号量所使用的函数与操作命名信号量使用的函数是一样的。此外,还需要两个函数;

  • sem_init()函数对一个信号量进行初始化并通知系统该信号量会在进程间共享还是在单个进程中的线程间共享。
  • sem_destory()函数销毁一个信号量。

这些函数不应该被应用到命名信号量上。

未命名与命名信号量对比
  • 在线程间共享的信号量不需要名字。将一个未命名信号量作为一个共享(全局或堆是上的)变量自动会使之对所有线程可访问。
  • 在相关进程间共享的信号量不需要名字。如果一个父进程在一块共享内存区域中分配了一个未命名信号量,那么作为fork()操作的一部分,子进程会自动继承这个映射,从而继承这个信号量。
  • 如果正在构建的是一个动态数据结构(如二叉树),并且其中的每一项都需要一个关联的信号量,那么最简单的做法是在每一项中都分配一个未命名的信号量。为每一项打开一个命名信号量需要为如何生成每一项中的信号名字和管理这些名字设计一个规则。
初始化一个未命名信号量

sem_init()函数使用value中指定的值来对sem指向的未命名信号量进行初始化。

#include<semaphore.h>

int sem_init(sem_t *sem,int pshared,unsigned int value);

pshared参数表明这个信号量是在线程间共享还是在进程间共享。

  • 如果pshared等于0,那么信号量将会在调用进程中的线程间进行共享。在这种情况下,sem通常被指定成一个全局变量的地址或分配在堆上的一个变量的地址。线程共享的信号量具备进程持久性,它在进程终止时会被销毁。
  • 如果pshared不等于0,那么信号量将会在进程间共享。在这种情况下,sem必须是共享内存区域中的某个地址的位置。信号量的持久性与它所处的共享内存的持久性是一样的。由于通过fork()创建的子进程会继承其父进程的内存映射,因此进程共享的信号量会被通过fork()创建的子进程继承,这样父进程和子进程也就能够使用这些信号量来同步它们的动作了。

未命名信号量不存在相关的权限设置。对一个未命名信号量的访问将由进程在底层共享内存区域上的权限来控制。
SUSv3规定对一个已初始化过的未命名信号量进行初始化操作将会导致未定义的行为。换句话说,必须要将应用程序设计成只有一个进程或线程来调用sem_init()以初始化一个信号量。
与命名信号量一样,在sem_t变量的副本上执行操作的结果是未定义的。

销毁一个未命名信号量

sem_destroy()函数将销毁信号量sem,其中sem必须是一个之前使用sem_init()进行初始化的未命名信号量。只有在不存在进程或线程在等待一个信号量时才能够安全销毁这个信号量。

#include<semapthore.h>

int sem_destroy(sem_t *sem);

当使用sem_destroy()销毁了一个未命名信号量之后就能够使用sem_init()来重新初始化这个信号量了。
一个未命名信号量应该在其底层的内存被释放之前被销毁。

代码示例

使用一个未命名线程共享的信号量来保护对全局变量的访问。

#include <semaphore.h>
#include <pthread.h>
#include "tlpi_hdr.h"

static int glob = 0;
static sem_t sem;

static void *                   /* Loop 'arg' times incrementing 'glob' */
threadFunc(void *arg)
{
    int loops = *((int *) arg);
    int loc, j;

    for (j = 0; j < loops; j++) {
        if (sem_wait(&sem) == -1)
            errExit("sem_wait");

        loc = glob;
        loc++;
        glob = loc;

        if (sem_post(&sem) == -1)
            errExit("sem_post");
    }

    return NULL;
}

int
main(int argc, char *argv[])
{
    pthread_t t1, t2;
    int loops, s;

    loops = (argc > 1) ? getInt(argv[1], GN_GT_0, "num-loops") : 10000000;

    /* Initialize a semaphore with the value 1 */

    if (sem_init(&sem, 0, 1) == -1)
        errExit("sem_init");

    /* Create two threads that increment 'glob' */

    s = pthread_create(&t1, NULL, threadFunc, &loops);
    if (s != 0)
        errExitEN(s, "pthread_create");
    s = pthread_create(&t2, NULL, threadFunc, &loops);
    if (s != 0)
        errExitEN(s, "pthread_create");

    /* Wait for threads to terminate */

    s = pthread_join(t1, NULL);
    if (s != 0)
        errExitEN(s, "pthread_join");
    s = pthread_join(t2, NULL);
    if (s != 0)
        errExitEN(s, "pthread_join");

    printf("glob = %d\n", glob);
    exit(EXIT_SUCCESS);
}
【Linux】POSIX信号量 文章目录一. 什么是POSIX信号量?二. 为什么要有POSIX信号量?三. POSIX信号量实现原理四. POSIX信号量接口函数1. 创建、初始化信号量2. 销毁信号量3. 等待(申请)信号量4. 发布(释放)信号量五. 信号量的应用1. 二元信号量模拟互斥锁2. 基于环形队列的生产者消费者模型2.1 四个规则2.2 环形队列的实现2.3 单生产者单消费者2.4 多生产者多消费者 一. 什么是POSIX信号量? POSIX和System V都是可移植的操作系统接口标准,它们都定义了操作系统应该为应用程序 阅读详情

相关推荐

SECS/GSM 测试工具 SecsExpress 的配置与实战应用

本文详细介绍了半导体设备通讯测试工具SecsExpress的配置与实战应用。作为专业的SECS/GSM协议调试工具,它能模拟Host与设备端进行双向测试,帮助工程师快速部署、验证通讯链路,并高效排查与RMS系统或真实设备间的联调问题,是提升半导体工厂设备集成与维护效率的利器。

yhn456789的博客 298

进程间资源竞争解决-信号量(3)

销毁并不代表空间释放了,只是说明信号量的值变成未定义的,所以如果开始是申请的无名信号量的空间需要 free 释放。该无名信号量的共享方式,为 0 的话是进程内部的线程共享,为 1 的话是不同进程间共享(不同进程都要能够访问到信号量)。要创建或者打开 POSIX 信号量在文件系统中的路径名(以'/'开头的路径,路径名中只有一个'/')用来获取 sem 指定的信号量的值,把信号量的值存储到 sval 指向的内存空间。你要初始化的信号量的初始值,信号量保护的共享资源可以同时有多少个个进程/线程访问。

jiu_yue_ya的博客 186

UE5.3.2 + VS2022社区版在Win11上的C++编译环境配置全解

Unreal Engine 5的C++开发依赖严格的工具链协同,其核心在于Visual Studio编译器版本、Windows SDK与引擎构建系统(UBT)的精准匹配。UE5.3.2强制要求MSVC v143.4(即VS2022 17.4+)及Windows 11 SDK 10.0.22621.0,任何偏差都会引发LNK2019链接失败、C1083头文件缺失或MSB8066构建中断等典型错误。该配置不仅关乎安装顺序,更涉及注册表清理、PATH环境变量、SDK路径注入与运行时DLL加载等底层机制。适用于Wi

weixin_33978722的博客 367

最全面的 linux 信号量解析

在做这个之前,要确定所有对这个有名信号量的引用都已经通过 sem_close() 函数关闭了,然后只需在退出或是退出处理函数中调用 sem_unlink() 去删除系统中的信号量,注意如果有任何的处理器或是线程引用这个信号量,sem_unlink() 函数不会起到任何的作用。字创建一个新的 IPC 结构。由于有名信号量的值是保存在文件中的,所以对于相关进程来说,子进程是继承了父进程的文件描述符,那么子进程所继承的文件描述符所指向的文件是和父进程一样的,当然文件里面保存的有名信号量值就共享了。

布袋和尚 6312

避开这些坑!baostock获取股票数据时最容易犯的5个错误(Python实战)

本文针对使用Python和baostock库获取股票历史数据时常见的五大陷阱,提供了实战解决方案。重点剖析了登录状态验证、参数配置、数据解析、批量操作效率及数据一致性校验等关键环节,帮助开发者构建稳健高效的数据获取流程,避免因细节疏忽导致的数据错误或性能瓶颈。

websocket5live的博客 1440

车载以太网-ARP 动态 静态

车载以太网-ARP 动态 静态

天赐好车的博客 409

Posix信号

Posix实时信号的值在SIGRTMIN和SIGRMAX之间(包括两者)。 如果需要实时行为,我们必须使用在SIGRTMIN和SIGRMAX之间的实时信号,且在安装信号处理程序时必须给sigaction指定SA_SIGINFO标志。 实时行为指   信号是排队的。就是说,如果同一信号产生了三次,它就递交了三次。以先进先出顺序排队。对于不排队的信号来说,产生了三次的信号可能只递交...

dew0927的博客 257

Python爬虫实战:如何抓取旅游论坛上的帖子、旅行攻略和评论内容

无论是知名的旅游网站,还是地方性的旅游讨论区,用户发布的旅行贴文、攻略和评论往往包含着大量的宝贵信息。本文将详细介绍如何使用Python编写一个爬虫,抓取旅游论坛上的帖子、旅行攻略和评论内容,涵盖从获取页面内容、解析数据到处理动态加载等各个方面的技术。从基本的请求和网页解析,到动态加载页面的处理,再到数据存储和反爬虫技巧,我们详细讲解了抓取旅游论坛数据的全过程。通过本文的介绍,你可以将所学的爬虫技术应用到其他类似的网站抓取任务中,为后续的数据分析、机器学习等任务提供丰富的数据源。在这种情况下,传统的。

2201_76125261的博客 1557

Linux进程间通信——使用POSIX信号量

Linux进程间通信——使用POSIX信号量 一、引言 信号量是包含一个非负整数型的变量,并且带有两个原子操作wait和signal。Wait还可以被称为down、P或lock,signal还可以被称为up、V、unlock或post。在UNIX的API中(POSIX标准)用的是wait和post。 对于wait操作,如果信号量的非负整形变量S大于0,wait就将其减1,如果S等于0,wait就将调用线程阻塞;对于post操作,如果有线程在信号量上阻塞(此时S等于0),post就会解除对某个等待线程的阻塞,

qq_18059143的博客 706

RK3568下GPIO模拟串口

在嵌入式开发中,硬件 UART 资源可能被其他外设占用。此时,通过 GPIO 模拟 UART(软串口)成为一种灵活的解决方案。本文基于 RK3568 平台,结合 Linux 内核模块,实现高精度软串口通信,并深入分析关键技术细节。可以看到已经接收到数据了,可以自己创建自定义的设备文件到/dev下,也可以按照串口设备的标准创建一个设备,后面有时间我写一篇和标准串口设备结合的gpio模拟串口文章。RK3568 GPIO 模拟串口(软串口)实现详解。将编译好的驱动放到板子上运行。再写个Makefile。

文石_2009的博客 364

【AI黑话日日新】什么是AI云原生?

云原生赋能AI:利用容器、微服务、Serverless、DevOps等云原生技术,解决AI应用(尤其是大模型)在部署、扩展、运维、成本控制方面的痛点,让AI服务具备高可用、高性能、易运维、易扩展的特性AI赋能云原生:将AI技术(如智能调度、异常检测、自动优化)融入云基础设施管理,使云平台具备自我感知、自我优化、自我修复的能力,从"被动响应"升级为"主动适配"其本质是实现从""(AI运行在云上)到""(为AI量身打造的云)的根本性转变。

专注:太空算力、AI infra、异构调度、大模型成本工程 627

linux进程间通信--信号量(POSIX 版本)

linux进程间通信–信号量(POSIX 版本) System V信号量是通过标识符而不是大多数UNIX I/O 和IPC所采用的文件描述符来引用的。由于这些潜在的缺点,因此POSIX标准又重新定义了信号量API。 POSIX标准信号量semaphore不仅可用于同一进程下的各个线程同步,也可以用于不同进程间同步。主要用于协调进程线程对共享资源的访问。 libc库实现了POSIX和System V两种接口标准的信号量API。这里主要讨论POSIX接口的信号量API. 信号量的原理与使用:信号量只能进行两种操

guoweilkd的博客 603

华为OD机试真题 新系统 9月16号 【园区基站节能部署规划】

华为OD机试真题 新系统【园区基站节能部署规划】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【园区基站节能部署规划】多语言题解。

qq_45776114的博客 351

《Linux系统编程篇》POSIX信号量(Linux 进程间通信(IPC))——基础篇

在 Linux 系统编程中,信号量(Semaphore)是一种重要的同步机制,主要用于解决并发访问的互斥和同步问题。

Strange_Head的博客 1209

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

linux应用 进程间通信之信号量(POSIX)

本文阐述了进程间通信之信号量(POSIX)的定义、应用场景、优缺点等,列举了编程中使用的接口,编写了测试用例测试相关功能

cesheng3410的博客 1630

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

linux信号量POSIX,linux进程间通信之Posix 信号量用法详解代码举例

Posix信号量不同于System V信号量的信号量集,Posix信号量是单一的信号量,分为有名信号量和无名信号量。Posix有名信号量是使用Posix IPC名字标示的信号量,可用于进程和线程间的同步;Posix无名信号量是指基于内存的信号量,存放在共享内存区中,用于进程与线程间的同步。Posix有名信号量可以是内核维护,也可以在文件系统中维护,这取决于信号量对应的路径名是否映射到了真正的磁盘文...

weixin_39617318的博客 204

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Linux学习——进程间通信之posix信号量的使用

1.概述 信号量(semaphore)是一种提供不同进程间或者一个给定进程不同线程之间的同步。 分为POSIX信号量和SystemV信号量,这里先学习POSIX信号量。 POSIX信号量又分为有名信号量和基于内存的信号量(无名信号量)。区别在于是否需要使用POSIX IPC名字来标识。 NOTE:Linux操作系统中,POSIX有名信号量创建在虚拟文件系统中 一般挂载在/dev/shm,其名字以...

现从事游戏开发领域 | 团队项目be_with开发进行中 web方向感兴趣者私 ——We can do all things. 846

linux 信号量_Linux 进程间通信之-POSIX 信号量

信号量根据实现分为System V 信号量 与POSIX 信号量 两种。这里就不在赘述什么是信号量【https://baike.baidu.com/item/linux进程间信号量/4211510】了,也有很多文章介绍了他们的概念,本文主要介绍POSIX 信号量与POSIX的一些不同之处。一、POSIX 信号量的优势与不足POSIX 信号量比System V信号量优越的地方:性能更好。System...

weixin_39949776的博客 155

linux进程间通信:POSIX信号量

概念描述 英文:semaphore 简称SEM,主要用来进行进程间同步 本质:内核维护的一个正整数,可对其进行各种+/-操作 分类:systemV 信号量、POSIX 有名信号量、POSIX 无名信号量 用途:用来标示系统中可用资源的的个数,协调各个进程有序的访问资源,防止发生冲突 P操作:程序在进入临界区之前要对资源进行申请,对资源的引用计数要-1,当资源个数为0时进程p操作会发生阻塞 V操作...

天行健,地势坤 703

Linux进程间通信IPC学习笔记之同步二(Posix 信号量)

Linux进程间通信IPC学习笔记之同步二(Posix 信号量) 转载于:https://www.cnblogs.com/gjianw217/p/3290273.html

weixin_30908707的博客 110

Linux进程间通信五 Posix 信号量简介与示例

信号量用于进程或线程间同步,Posix信号量是一个非负整型,只有两种操作,加一(sem_post)和减一(sem_wait),如果信号量值为0,sem_wait默认阻塞。 Posix信号量有两种,有名信号量和无名信号量,顾名思义,就是是否有名字。有名信号量有一个名字,长度不超过NAME_MAX-4(i.e. 251),因为内核会默认加上'sem.',所以这里要减4,名字以斜杠开头'/',后面跟上一个或多个非斜杠字符。不同进程可以通过同一个名字来操作有名信号量,sem_open用于创建或者获取已存在的信号量

fuyuande的博客 5090

进程间通信——POSIX 有名信号量与无名信号量

Linux服务器相关视频 服务端的网络并发,详细解读网络io与线程进程 挑战360°无死角讲解 进程管理,调度器的5种实现 LinuxC++后台服务器架构师免费学习地址 前言 在 POSIX 系统中,进程间通信是一个很有意思的话题。 POSIX信号量进程是3种 IPC(Inter-Process Communication) 机制之一,3种 IPC 机制源于 POSIX.1 的实时扩展。Single UNIX Specification 将3种机制(消息队列,信号量和共享存储)置于可选部分..

资料qun832218493 585

Linux进程间通信(IPC)教程 Linux信号量:讲解POSIX信号量在Linux系统进程间通信中的编程实践

POSIX 信号量的使用

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 1730

【Linux开发七】进程间通信|无名管道|命名管道|System V 消息队列|System V 信号量|System V 共享内存|POSIX消息队列|POSIX信号量|POSIX共享内存

进程间通信(简称IPC),指的是多个进程间进行数据交换和信息传递,在Linux系统下,每个进程都有着自己独立的地址空间和资源,想要进行通信就需要IPC机制。进程间通信目的:数据交换,资源共享,进程同步,传递消息。进程间通信的基本原理:不同的进程能访问和操作同一个内存空间。进程间通信的分类:有名管道和无名管道、System V消息队列,信号量,共享内存、POSIX 消息队列,信号量,共享内存、socket。System V和POSIX的主要区别在于System V底层使用命名空间。

2501_93649289的博客 943

【Linux C | 进程】Linux 进程间通信的10种方式(2)

本文介绍进程间通信的五种方式:POSIX消息队列、POSIX信号量、POSIX共享内存、信号、套接字。

wkd_007的博客 1760
上一篇: Linux进程间通信之POSIX消息队列
下一篇: Linux进程间通信之POSIX共享内存
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值