#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <sys/msg.h>
#include <unistd.h>
#include <time.h>
#include <signal.h>
#include <sys/wait.h>


union semun{
    int val;
}arg;

typedef struct{
    long tip;
    int cvorovi[12];
    int operacija;
    int rezultat;
    int niz[4];
    int rd_broj;
    int pid;
    int rez[3];
}Operacija;


enum{PRISTUP_KLASTERU,PRIJAVA_TRI_REDNA_CVORA,OBAVLJENI_ZADACI};

int main(){

    key_t msgkey=ftok("./init.c",'Q');
    int msgid=msgget(msgkey,IPC_CREAT|0666);

    key_t shmkey=ftok("./init.c",'M');
    int shmid=shmget(shmkey,sizeof(Operacija),IPC_CREAT|0666);

    key_t semkey=ftok("./init.c",'S');
    int semid=semget(semkey,3,IPC_CREAT|0666);

    Operacija *o=(Operacija*)shmat(shmid,NULL,0);
    o->rezultat=0;
    o->operacija=0;

    arg.val=1;
    semctl(semid,PRISTUP_KLASTERU,SETVAL,arg.val);

    arg.val=0;
    semctl(semid,PRIJAVA_TRI_REDNA_CVORA,SETVAL,arg.val);

    arg.val=3;
    semctl(semid,OBAVLJENI_ZADACI,SETVAL,arg.val);

    return 0;

}