LINUXQQ

九月 11, 2009

Linux下操作信号量概述

类归于: 乱7八糟 — 标签: — admin @ 11:48 上午

ftok函数是根据pathname和proj来创建一个关键字。
semget创建一个信号量。成功时返回信号的ID,key是一个关键字,可以是用ftok创建的也可以是IPC_PRIVATE表明由系统选用一个关键字。nsems表明我们创建的信号个数。semflg是创建的权限标志,和我们创建一个文件的标志相同。
semctl对信号量进行一系列的控制。semid是要操作的信号标志,semnum是信号的个数,cmd是操作的命令。经常用的两个值是:SETVAL(设置信号量的值)和IPC_RMID(删除信号灯)。arg是一个给cmd的参数。
semop是对信号进行操作的函数。semid是信号标志,spos是一个操作数组表明要进行什么操作,nspos表明数组的个数。如果sem_op大于0,那么操作将sem_op加入到信号量的值中,并唤醒等待信号增加的进程。如果为0,当信号量的值是0的时候,函数返回,否则阻塞直到信号量的值为0。如果小于0,函数判断信号量的值加上这个负值。如果结果为0唤醒等待信号量为0的进程,如果小与0函数阻塞。如果大于0,那么从信号量里面减去这个值并返回

WordPress 所驱动