p;. IPC_SET:设置semid相关数据结构的如下成员,设置数据从 arg.buf指向的结构中读取:
sem_perm.uid
sem_perm.gid
sem_perm.mode
本命令只能由有效UID等于sem_perm.cuid或sem_perm.uid的
进程或有效UID有合适权限的进程操作.
. IPC_RMID:删除由semid指定的信号量标识符和相关的一组信号
量及数据结构.本命令只能由有效UID等于sem_perm.cuid或
sem_perm.uid的进程或有效UID有合适权限的进程操作.
返回值:若调用成功,则根据cmd返回以下值:
GETVAL:semval的值.
GETPID:sempid的值.
GETNCNT:semncnt的值.
GETZCNT:semzcnt的值.
其他:0.
若调用失败则返回-1.
22.semget()
功能:取得一组信号量.
语法:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget(key,nsems,semflg)
key_t key;
int nsems,semflg;
说明:返回和key相关的信号量标识符.
若以下事实成立,则与信号量标识符,与之相关的semid_ds数据结
构及一组nsems信号量将被创建:
. key等于IPC_PRIVATE.
. 系统内还没有与key相关的信号量,同时(semflg&IPC_CREAT)
为真.
创建时新的信号量相关的semid_ds数据结构被初始化如下:
. 在操作权限结构,sem_perm.cuid和sem_perm.uid设置等于调用
进程的有效UID.
. 在操作权限结构,sem_perm.cgid和sem_perm.gid设置等于调用
进程的有效GID.
. 访问权限比特位sem_perm.mode设置等于semflg的访问权限比
特位.
. sem_otime设置等于0,sem_ctime设置等于当前系统时间.
返回值:若调用成功,则返回一非0值,称为信号量标识符;否则返回-1.
23.semop()
功能:信号量操作.
语法:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semop(semid,sops,nsops)
int semid;
struct