Elaborato_SO/src/F4Server.c

67 lines
1.2 KiB
C

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/stat.h>
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <server.h>
#include <structures.h>
#include <custom_sem.h>
#include <custom_shm.h>
#include <errExit.h>
void sigHandler(int sig) {
//TODO:
exit(0);
}
int main(int argc, char *argv[]){
input_server_t input = check_input(argc, argv);
// SHM
int shmBoardid = getShmid(input.rows, input.collums);
tile_t *board = shmServerAt(shmBoardid);
//
// SEM
key_t semKey = ftok(KEYFILE, 'S');
int semid = getSemid(semKey, 2);
//
// SIGNAL
sigset_t mySet;
sigfillset(&mySet);
sigdelset(&mySet, SIGINT);
sigprocmask(SIG_SETMASK, &mySet, NULL);
if (signal(SIGINT, sigHandler) == SIG_ERR)
errExit("signal", "f4Server");
resetServerSem(semid);
//
// MSGQ
key_t msgKey = ftok(KEYFILE, 'M');
int msqid = msgget(msgKey, IPC_CREAT | S_IRUSR | S_IWUSR);
if (msqid == -1)
errExit("msgq", "F4Server");
//
semOp(semid, 0, 2); // aperurta semaforo per connessione dei due client
semOp(semid, 0, 0); // aspetto che si connettano i due client
// faccio quello che devo fare
return 0;
}