Скачиваний:
4
Добавлен:
26.05.2014
Размер:
986 б
Скачать
#include "share_ex.h"
#define IFLAGS (IPC_CREAT | IPC_EXCL)
#define ERR ((struct databuf *) -1)

static int shmid1, shmid2, semid;

void getseg(struct databuf **p1, struct databuf **p2){
	if((shmid1 = shmget(SHMKEY1, sizeof(struct databuf), 0600|IFLAGS))=-1)
	perror("shmget");
	
	if((shmid2 = shmget(SHMKEY2, sizeof(struct databuf), 0600|IFLAGS))=-1)
	perror("shmget");
	
	if((*p1 = (struct databuf *)shmat(shmid1, 0, 0)) == ERR)
	perror("shmat");
	
	if((*p2 = (struct databuf *)shmat(shmid2, 0, 0)) == ERR)
	perror("shmat");
}

int getsem(void){
	union semun x;
	x.val = 0;
	
	if((semid = semget(MEMKEY, 2, 0600|IFLAGS)) =-1)
	perror("semget");
	
	if(semctl(semid, 0, SETVAL, x) == -1)
	perror("semctl");
	if(semctl(semid, 1, SETVAL, x) == -1)
	perror("semctl");
	return (semid);
}

void remobj(void){
	if(shmctl(shmid1, IPC_RMID, NULL) ==-1)
	perror("semctl");
	if(shmctl(shmid2, IPC_RMID, NULL) ==-1)
	perror("semctl");
	if(shmctl(semid,0, IPC_RMID, NULL) ==-1)
	perror("semctl");
}
Соседние файлы в папке kurswork