通信方式--信号量的操作
来源:互联网 发布:青岛永诚网络 编辑:程序博客网 时间:2024/06/03 14:26
#include<stdio.h>#include<unistd.h>#include<sys/sem.h>#include<sys/types.h>#include<sys/ipc.h>#include<stdlib.h>union semun //man semctl{ int val; /* Value for SETVAL */ struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */ unsigned short *array; /* Array for GETALL, SETALL */ struct seminfo *__buf; /* Buffer for IPC_INFO (Linux-specific) */};// int semget(key_t key,int nsems,int semflg);//创建信号量 // 关键字 信号个数 操作标志int main(){ key_t sem_key; sem_key = ftok("mysem",0xff);//创建关键字 if(sem_key == -1) { perror("ftok"); exit(1); } else { printf("sem_key = 0x%x\n",sem_key); //以十六进制打印 } int sem_id = semget(sem_key,2,IPC_CREAT|IPC_EXCL|0755); if(sem_id == -1) { perror("semget"); exit(1); } else { printf("sem_id = %d\n",sem_id); } union semun init_val, init_val1;//初始化操作 init_val.val = 2; init_val1.val = 3; semctl(sem_id, 0, SETVAL, init_val);//删除信号集 semctl(sem_id, 1, SETVAL, init_val1); struct sembuf op[2]; op[0].sem_num = 0; op[0].sem_op = -1; //>0 ==0 <0 op[0].sem_flg = 0; //SEM_UNDO op[1].sem_num = 1; op[1].sem_op = -2; op[1].sem_flg = 0; semop(sem_id, op, 2); int sem_val = semctl(sem_id, 0, GETVAL); printf("sem_val = %d\n",sem_val); sem_val = semctl(sem_id, 1, GETVAL); printf ("sem_val1 = %d\n",sem_val); return 0;}
阅读全文
0 0
- 通信方式--信号量的操作
- 通信方式--信号量的一系列操作(创建 获取 设置 删除以及PV操作)
- 进程通信方式之 信号量与PV操作
- Linux进程间的通信方式:信号量的使用
- 信号量的通信
- linux的信号量通信
- 进程间通信:通俗理解信号量方式
- 进程间通信方式之信号量
- 进程间通信方式(二)信号量
- 进程的信号量操作
- 信号量操作的包装
- 信号量的PV操作
- linux的信号量操作
- 9信号量的操作
- Linux进程间通信(IPC)编程实践(九)System V信号量---封装一个信号量操作的工具集
- Linux进程间通信的两种方式:使用共享内存和信号量
- <linux线程>POSIX无名信号量的基本操作---两个线程间的通信
- 信号量通信
- python装饰器
- 【Bugku】这是一张单纯的图片?? 【writeup】
- Android强制用户重新登录处理
- java项目中的加密
- centos7 hadoop 配置ssh
- 通信方式--信号量的操作
- typedef float V __attribute__((vector_size(16)));的含义
- ssh框架搭建(注解)
- crontab和anacron和logrotate的关系详解
- HDU 1159 Common Subsequence (LCS)
- Zabbix 系列博客教程目录
- Android的事件传递机制
- Kotlin学习资料汇总
- Java基础day01