Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
01.05.2014
Размер:
1.29 Кб
Скачать
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <iostream.h>
#include "l4.h"

  
 int main()
  {
  Message *msgptr;
  key_t key;
  int shmid, semid;
 
 key = ftok("server", 'A');
    
 if((shmid=shmget(key, sizeof(Message), 0))==0)
    {cout<<endl<<"Oshibka dostupa";exit(1);}

 if((msgptr=(Message *)shmat(shmid,0,0))<0)
    {cout<<endl<<"Oshibka prisoedinenia";exit(1);} 

  if((semid=semget(key, 2, PERM) < 0))
    {
     cout<<endl<<"Nevozmojno sozdat semafor";
     exit(1);}

   if(semop(semid, &mem_lock[0], 2)<0)
    {cout<<endl<<"Nevozmojno vipolnit operaciu!";
      exit(1);}
   
   if(semop(semid, &proc_start[0], 1)<0)
    {cout<<endl<<"Nevozmojno vipolnit operaciu!";
     exit(1);}

   sprintf(msgptr->buff, "Zdorova \n");

   if(semop(semid, &mem_unlock[0], 1)<0)
    {cout<<endl<<"Nevozmojno vipolnit operaciu!";
      exit(1);}
       
   if(semop(semid, &mem_lock[0], 2)<0)
    {cout<<endl<<"Nevozmojno vipolnit operaciu!";
      exit(1);}


   if(shmdt(msgptr)<0)
    {cout<<endl<<"Oshibka otkluchenia";exit(1);}

   
   if(shmctl(shmid, IPC_RMID, 0)<0)
    {cout<<endl<<"Nevozmojno udalit semafor!";exit(1);
    }

   if(semctl(semid, 0, IPC_RMID)<0)
    {cout<<endl<<"Nevozmojno udalit semafor!";exit(1);}
   exit(0);

}
Соседние файлы в папке 4