新闻资讯
看你所看,想你所想

sem_init

sem_init

sem_init

sem_init函式是Posix信号量操作中的函式。sem_init() 初始化一个定位在 sem 的匿名信号量。value 参数指定信号量的初始值。 pshared 参数指明信号量是由进程内执行绪共享,还是由进程之间共享。如果 pshared 的值为 0,那幺信号量将被进程内的执行绪共享,并且应该放置在这个进程的所有执行绪都可见的地址上(如全局变数,或者堆上动态分配的变数)。

基本介绍

  • 中文名:sem_init
  • 头档案:#include<semaphore.h>
  • 函式原型:unsigned int value);
  • 返回值:int sem_init(sem

头档案

#include<semaphore.h>

函式原型

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

说明

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

参数

sem :指向信号量对象
pshared : 指明信号量的类型。不为0时此信号量在进程间共享,否则只能为当前进程的所有执行绪共享。
value : 指定信号量值的大小

返回值

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

错误

EINVAL
value 超过 SEM_VALUE_MAX。
ENOSYS
pshared 非零,但系统还没有支持进程共享的信号量。

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com