sem_init函数是Posix信号量操作中的函数。

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

sem_init() 初始化一个定位在 sem 的匿名信号量。value 参数指定信号量的初始值。 pshared 参数指明信号量是由进程内线程共享,还是由进程之间共享。

如果 pshared 的值为 0,那么信号量将被进程内的线程共享,并且应该放置在这个进程的所有线程都可见的地址上(如全局变量,或者堆上动态分配的变量)。

如果 pshared 是非零值,那么信号量将在进程之间共享,并且应该定位共享内存区域(见 shm_open(3)、mmap(2) 和 shmget(2))。因为通过 fork(2) 创建的孩子继承其父亲的内存映射,因此它也可以见到这个信号量。所有可以访问共享内存区域的进程都可以用 sem_post(3)、sem_wait(3) 等等操作信号量。初始化一个已经初始的信号量其结果未定义。

返回值:sem_init() 成功时返回 0;错误时,返回 -1,并把 errno 设置为合适的值。

一个例子:

比如有两个线程都要往打印机上打东西,但是同一时刻只能打一个。那么首先用sem_init初始化一个信号量,注意pshared表示允许几个进程共享该信号量,一般设0用于进程内的多线程共享,要看是否支持进程共享,请查看下你的系统的man手册。

Linux sem_init函数用法相关推荐

  1. sem_init函数用法

    sem_init函数 sem_init函数是Posix信号量操作中的函数.sem_init() 初始化一个定位在 sem 的匿名信号量.value 参数指定信号量的初始值. pshared 参数指明信 ...

  2. linux signal函数用法,linux信号机制之sigaction构造体浅析,signal 函数,信号捕捉.

    来自:http://hi.baidu.com/phenix_yw/blog/item/6eb4ca391d1479f23a87ce19.html 信号安装函数sigaction(int signum, ...

  3. linux getline函数用法,Linux文本处理三剑客之awk学习笔记05:getline用法详解

    getline用法详解 在默认情况下,awk支持从文件或者STDIN中读取数据.我们也可以使用getline来灵活读取数据,例如在main代码块执行过程中读取某个非待处理文件的数据,或者从某个读取某个 ...

  4. linux fseek函数用法详解

    1.功 能 重定位流( 数据流/文件)上的 文件内部位置 指针 注意:不是 定位文件指针,文件指针指向文件/流.位置 指针指向文件内部的字节位置,随着文件的读取会移动, 文件指针如果不重新赋值将不会改 ...

  5. linux getline函数用法,get()与getline()

    以下内容来自:http://yanger2004.ycool.com/post.2831191.html 相同点: 要获取一行的输入,标准流类的成员函数getline(),get()都有三个参数,比如 ...

  6. linux select函数用法

    select系统调用是用来让我们的程序监视多个文件句柄的状态变化的.程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变.关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0 ...

  7. linux闹钟函数用法(alarm)

    alarm(闹钟函数),当定时器指定的时间到时,它向进程发送SIGALRM信号.可以设置忽略或者不捕获此信号,如果采用默认方式其动作是终止调用该alarm函数的进程. 在调用前需要写处理函数myAla ...

  8. Linux access()函数 使用 http://blog.163.com/lqy_super/blog/static/199751021201302351831330/

    Linux access()函数 使用 2013-01-23 17:18:31|  分类: Linux相关|举报|字号 订阅 下载LOFTER客户端 Linux access函数功能描述: 检查调用进 ...

  9. c语言strTrimed函数用法介绍,linux type命令用法_转

    在脚本中type可用于检查命令或函数是否存在,存在返回0,表示成功:不存在返回正值,表示不成功. $ type foo >/dev/null 2>&1 || { echo > ...

最新文章

  1. 技术项目 - Linux Swap
  2. Git学习笔记——分支
  3. java代码删除文件夹_删除文件夹的java类
  4. Mysql数据目录初识
  5. C#判断一个类中有无指定名称的方法
  6. iis php日志查看工具,教你如何查看IIS日志
  7. python中有readall吗_在python中使用tn.read_all()读取数据
  8. Android中getDimension,getDimensionPixelOffset和getDimensionPixelSize 区别
  9. 格雷码转换成二进制c语言程序,基于PLC程序实现格雷码转换成二进制码.pdf
  10. 云网资源如何搭乘「数字孪生」的快车道?
  11. python基础之排列组合以及正则表达式
  12. iPhone13外部拨打电话总是暂时无法接通解决方案
  13. C盘空间大释放——Downloaded Installations
  14. 教你这么理解 『假脱机打印机系统』
  15. Delphi CreateMutex 防止程序多次运行
  16. 笔记本固态盘数据丢失怎么办?笔记本固态盘怎么恢复数据
  17. 实时守护重要物件,异常情况及时推送,VOC智能保管箱G300上手
  18. 【操作系统实验】各种幺蛾子
  19. 《勋伯格和声学》读书笔记(十三):在调性的边缘(对减七和弦和增七和弦及其转位和弦的进一步观察)
  20. PHP简易开发的问卷调查系统

热门文章

  1. LUA 利用#遍历表的问题
  2. windows配置java运行环境
  3. 数据蒋堂 | 怎样看待存储过程的移植困难
  4. BZOJ4855 : [Jsoi2016]轻重路径
  5. 腾讯云数据库团队:MySQL5.7 JSON实现简介
  6. 巧用组策略技术禁用办公室QQ聊天
  7. 使用DLL封装窗体和业务类
  8. Application Architecture Guide 2.0 (Chapter 7: Quality Attributes) Part 3
  9. windows2003的一些设置之一
  10. varchar,nvarchar不同呀。小心出错