⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p11-16.c

📁 SUN Solaris8平台下进程间通信
💻 C
字号:
#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>/* 说明semun结构 */union semun {   int val;   struct semid_ds *buf;   unsigned short *array;};/* 获得指定的信号量之值 */int get_sem_val( int sid, int semnum ){    return( semctl(sid, semnum, GETVAL, 0));}/* 给指定的信号量赋初值 */void init_a_semaphore( int sid, int semnum, int initval){    union semun semopts;        semopts.val = initval;    semctl( sid, semnum, SETVAL, semopts);}/* 给指定的信号量集合赋初值 */void init_all_semaphore( int sid, int val_array[]){    union semun semopts;     semopts.array = val_array;    semctl( sid, 0, SETALL, semopts);}/* 改变信号量集合的访问权限,权限参数必须是形如"660"的字符串 */int changemode(int sid, char *mode){    int rc;    union semun semopts;        struct semid_ds mysemds;    /* 注意,应先使semopts.buf 指向我们自己定义的缓冲区! */    semopts.buf = &mysemds;    /* 获得内部数据结构的当前值 */    if ((rc = semctl(sid, 0, IPC_STAT, semopts)) == -1)        return -1;    /* 改变访问权限 */    sscanf(mode, "%o", &semopts.buf->sem_perm.mode);    /* 更新内部数据结构 */    return(semctl(sid, 0, IPC_SET, semopts));}/* 删除指定的信号量集合 */int rm_semaphore(int sid){    return(semctl(sid, 0, IPC_RMID,0));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -