linux——信号灯
信号灯集合可以包含多个信号灯IPC对象是一个信号的集合多个信号量semaphore函数原型 int semget(key_t key, int nsems, int semflg); //创建一个新的信号量或获取一个已经存在的信号量的键值。 所需头文件 #include sys/types.h #include sys/ipc.h #include sys/sem.h 函数参数 key和信号灯集关联的key值 nsems: 信号灯集中包含的信号灯数目 semflg信号灯集的访问权限 函数返回值 成功信号灯集ID 出错‐1#includestdio.h #include sys/types.h #include sys/ipc.h #include sys/sem.h #includestdlib.h int main() { int semid; semid semget(IPC_PRIVATE,3,0755); if(semid0) { printf(creat semaphore failed\n); return -1; } printf(creat semaphore succeed semid is %d\n,semid); system(ipcs -s); return 0; }函数原型int semctl ( int semid, int semnum, int cmd…union semun arg(不是地址)); //控制信号量删除信号量或初始化信号量 所需头文件 #include sys/types.h #include sys/ipc.h #include sys/sem.h 函数参数 semid信号灯集ID semnum: 要修改的信号灯编号 cmd : GETVAL获取信号灯的值 SETVAL设置信号灯的值 IPC_RMID从系统中删除信号灯集合 函数返回值 成功0 出错‐1#includestdio.h #include sys/types.h #include sys/ipc.h #include sys/sem.h #includestdlib.h int main() { int semid; semid semget(IPC_PRIVATE,3,0755); if(semid0) { printf(creat semaphore failed\n); return -1; } printf(creat semaphore succeed semid is %d\n,semid); system(ipcs -s); semctl(semid,0,IPC_RMID,NULL); system(ipcs -s); return 0; }semctl(id, num, cmd)第一个参数 id你要删哪个信号量集合第二个参数 num你要操作集合里第几个信号量IPC_RMID删整个集合num 无效
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2483980.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!