LinuxIPCPOSIX信号量

 模型

#include#include#includesem_open() //初始化并打开有名信号量sem_init() //创建/获得无名信号量sem_w     ai   t()/sem_trywait()/sem_     ti   medwait()/sem_post()/sem_getvalue() //操作信号量sem_close() //退出有名信号量sem_unlink() //销毁有名信号量sem_destroy() //销毁无名信号量

sem_open()

//创建/打开一个有名信号量,成功返回新信号量的地址,失败返回SEM_FAILED设errno// //#define SEM_FAILED ((sem_t *) 0//#define SEM_VALUE_MAX (2147483647)//Link with -pthread.sem_t *sem_open(const char *name, int oflag);sem_t *sem_open(const char *name, int oflag, mode_t mode, unsigned int value);

oflag

O_CREAT如果信号量不存在就创建信号量,信号量的UID被设为调用进程的effec  TI ve UID,GID被设为调用程序的GID,可以在mode指定权限  O_EXCL和O_CREAT连用,确保可以创建新的信号量,如果已存在就报错  value :配合O_CREAT使用,设置信号量的初始值

sem_init()

//初始化无名信号量,成功返回0,失败返回-1设errno//Link with -pthread.int sem_init(sem_t *sem, int pshared, unsigned int value);

sem 创建无名信号量的指针
pthread指定信号量是在线程间使用还是进程间使用

0表示信号量在一个进程内的线程间使用,此时信号量应该分配的在线程可见的内存区域(eg,全局区,BSS段,堆区)

非0表示信号量在进程间使用,此时信号量应该分配在共享内存里,If pshared !=0,

sem_wait()/sem_trywait()/sem_  TI medwait()

//Link with -pthread.//成功返回降低后的信号量的值,失败返回-1设errno//试图占用信号量,如果信号量值>0,就-1,如果已经=0,就block,直到>0int sem_wait(sem_t *sem);//试图占用信号量,如果信号量已经=0,立即报错int sem_trywait(sem_t *sem);//试图占用信号量//如果信号量=0,就block abs_timeout那么久,从 Epoch, 1970-01-01 00:00:00 +0000 (UTC).开始按纳秒计//如果时间到了信号量还没>0,报错int sem_  TI medwait(sem_t *sem, const struct  TI mespec *abs_timeout);

struct timespec { time_t tv_sec; /* Seconds */ long tv_nsec; /* Nanoseconds [0 .. 999999999] */};

sem_post()

//归还信号量,成功返回0,失败返回-1设errno//Link with -pthread.int sem_post(sem_t *sem);

sem_getvalue()

//获得信号量sem的当前的值,放到sval中。如果有线程正在block这个信号量,sval可能返回两个值,0或“-正在block的线程的数目”,     Linux   返回0//成功返回0,失败返回-1设errno//Link with -pthread.int sem_getvalue(sem_t *sem, int *sval);

sem_close()

//关闭有名信号量,成功返回0,失败返回-1设errno//Link with -pthread.int sem_close(sem_t *sem);

sem_unlink()

//试图销毁信号量,一旦所有占用该信号量的进程都关闭了该信号量,那么就会销毁这个信号量//成功返回0,失败返回-1设errno//Link with -pthread.int sem_unlink(const char *name);

sem_destroy()

//销毁信号量,成功返回0,失败返回-1设errno//Link with -pthread.int sem_destroy(sem_t *sem);



LinuxIPCPOSIX信号量_设计制作_电源/新能源
63
144
0
97

相关资讯

  1. 1、汤姆·克鲁斯个人电影全球票房超过100亿美元大关!1564
  2. 2、暑期档深度观察:新导演不断出现,类型片不断成熟,市场日趋理性3458
  3. 3、《感动她77次》惠英红阿sa再演母女高能哭戏预警1784
  4. 4、《悬崖之上》编剧全勇先:写好人物关系,是创作谍战片的“法宝”1812
  5. 5、古天乐新片太惨淡,首日票房560万,输给了猪猪侠大电影!2956
  6. 6、《山河令》结局有彩蛋,发文告别周子舒,超过6万网友看了泪崩2592
  7. 7、《我们的法兰西岁月》热播讲述共产党成立细节3408
  8. 8、周迅为拍《如懿传》亲身上阵,不仅遭人掌掴还被鞭打!难怪口碑逆袭!2349
  9. 9、82岁谢贤近况不佳妻不理儿不管,甩掉小女友后现状让人唏嘘2501
  10. 10、曝朱莉皮特将继《史密斯夫妇》后再度合拍新片4528
全部评论(0)
我也有话说
0
收藏
点赞
顶部