/*shm_com.h*/
#include
#include
#include
#include
#include
#include
#include
#define SHM_BUFF_SZ 2048
struct shm_buff
{
int pid;
char buffer[SHM_BUFF_SZ];
};
/*sem_com.h*/
#include
#include
#include
#include
#include
union semun
{
int val;
struct semid_ds *buf;
unsigned short *array;
};
/*信号量初始化(赋值)函数*/
int init_sem(int sem_id,int init_value);
/*从系统中删除信号量的函数*/
int del_sem(int sem_id);
/*p操作函数*/
int sem_p(int sem_id);
/*V操作函数*/
int sem_v(int sem_id);
/*sem_com.c*/
#include"sem_com.h"
/*信号量初始化(赋值)函数*/
int init_sem(int sem_id,int init_value)
{
union semun sem_union;
sem_union.val=init_value; /*init_value为初始值*/
if(semctl(sem_id,0,SETVAL,sem_union)==-1)
{
perror("Initialize semaphore");
return -1;