sem_init


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 设定为合适的值 。错误EINVALvalue 超过 SEM_VALUE_MAX 。ENOSYSpshared 非零,但系统还没有支持进程共享的信号量 。