#include<stdio.h>
#include<linux/sem.h>
#include<linux/shm.h>
#include<unistd.h>
#include<error.h>
#include<sys/types.h>
#include<time.h>
#define MAXSHM 5 /*定义缓存区数组的下标变量个数*/
/******定义3个信号量的内部标识******/
int fullid;
int emptyid;
int mutexid;
int main()
{
/*定义信号量数据结构*/
struct sembuf P,V;
union semun arg;
/*定义2个共享内存的ID*/
int arrayid;
int getid;
/*定义共享内存虚拟地址*/
int *array;
int *get;
/*创建共享内存*/
arrayid=shmget(IPC_PRIVATE,sizeof(int)*MAXSHM,IPC_CREAT|0666);
getid=shmget(IPC_PRIVATE,sizeof(int),IPC_CREAT|0666);
/*初始化共享内存*/
array=(int *)shmat(arrayid,0,0);
get = (int *)shmat(getid,0,0);
*get=0;
/*创建信号量*/
emptyid=semget(IPC_PRIVATE,1,IPC_CREAT|0666);
fullid=semget(IPC_PRIVATE,1,IPC_CREAT|0666);
mutexid=semget(IPC_PRIVATE,1,IPC_CREAT|0666);
/*初始化信号量*/
arg.val=0; /*初始时缓冲区中无数据*/
Linux相关——linux操作系统之生产者与消费者同步问题
最新推荐文章于 2025-04-09 23:27:37 发布