#include #include #include #include #include #include #include #include #include #include #include #include void sigHandlerClient(int sig) { if (sig == SIGINT) { //TODO: } if (sig == SIGTERM) { //TODO: in teoria non fa niente di speciale qua, in quanto il server dovrebbe chiudere tutto } exit(0); } //TODO: mettere main ma non l'ho fatto per makefile int client(){ input_server_t input; // SIGNAL sigset_t mySet; sigfillset(&mySet); sigdelset(&mySet, SIGINT); sigdelset(&mySet, SIGTERM); sigprocmask(SIG_SETMASK, &mySet, NULL); if (signal(SIGINT, sigHandlerClient) == SIG_ERR) { errExit("signal SIGINT", "F4Client"); } if (signal(SIGTERM, sigHandlerClient) == SIG_ERR) { errExit("signal SIGTERM", "F4Client"); } // // MSGQ key_t msgKey = ftok(KEYFILE, 'M'); int msgid = msgget(msgKey, IPC_CREAT | S_IRUSR | S_IWUSR); if (msgid == -1) { errExit("msgget", "F4Client"); } // msg msg_t msg; // msgsnd if (msgrcv(msgid, &msg, sizeof(msg_t) - sizeof(long), 1, 0) == -1) { errExit("msgrcv", "F4Client"); } input = msg.server_in; // // SHM int shmBoardid = getShmid(input.rows, input.collums); tile_t *board = shmClientAt(shmBoardid); // // SEM key_t semKey = ftok(KEYFILE, 'S'); if ((semid = semget(semKey, 2, S_IRUSR | S_IWUSR | IPC_CREAT)) == -1) { errExit("getsem", "F4Client"); } // semOp(semid, 0, -1); // aspetta che il server gli dia il permesso di connettersi printf("\033[94m\033[39m Connecting to server...\n"); semOp(semid, 1, -1); // finito operazioni di connessione return 0; }