首页 > 其他 > 详细

IPC之信号量

时间:2015-12-27 13:20:35      阅读:273      评论:0      收藏:0      [点我收藏+]

无名信号量

POSIX标准提出了有名信号量和无名信号量来同步进程和线程,而linux(2.6以前)只实现了无名信号量。

sem_overview中有详细介绍:man 7 sem_overview.

System V semaphores(semget, segop, etc.)是旧的信号量API,但应用广泛。 posix信号量简单易用。

  • Posix Sem
#include <semphore.h>
int sem_init(sem_t *sem, int pshared, unsigned int value);
int sem_destroy(sem_t *sem);
int sem_wait(sem_t *sem);
int sem_trywait(sem_t *sem);
int sem_post(sem_t *sem);
int sem_getvalue(sem_t *sem);

pshared决定了信号量是否在几个进程间共享,由于linux还没有实现进程间共享信号灯,所以pshared只能取0.

编译上面几个函数程序要加上-lrt选项,以连接the real-time library, librt.so库。

  • System sem
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
key_t ftok(char *pathname, char proj);
int semget(key_t key, int nsems, int semflg);
int semctl(int semid, int semnum, int cmd, union semun arg);
int semop(int semid, struct sembuf *spos, int nspos);

struct sembuf{
    short sem_num; /*使用哪一个信号*/  
    short sem_op; /*进行什么操作*/
    short sem_flg; /*操作的标志*/    
};

IPC之信号量

原文:http://www.cnblogs.com/embedded-linux/p/5079824.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!