From 9daf4457024fd1741d97823616acb0e2cd0c170c Mon Sep 17 00:00:00 2001 From: Lorenzo Bianchi Date: Mon, 15 May 2023 10:43:25 +0200 Subject: [PATCH] added client --- inc/custom_sem.h | 3 ++- src/F4Server.c | 5 ++++- src/custom_sem.c | 15 ++++++++------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/inc/custom_sem.h b/inc/custom_sem.h index c49e7ca..6911823 100644 --- a/inc/custom_sem.h +++ b/inc/custom_sem.h @@ -2,6 +2,7 @@ #define SEMAPHORE_H void semOp(int semid, short sem_num, short sem_op); -int getSemid(); +int getSemid(key_t key, int size); +void resetServerSem(int semid); #endif \ No newline at end of file diff --git a/src/F4Server.c b/src/F4Server.c index e78ae15..8d31d1b 100644 --- a/src/F4Server.c +++ b/src/F4Server.c @@ -5,17 +5,20 @@ #include #include #include +#include int main(int argc, char *argv[]){ input_server_t input = check_input(argc, argv); - int shmBoardid = getShmid(); + int shmBoardid = getShmid(input.rows, input.collums); tile_t *board = shmServerAt(shmBoardid); // si potrebbe mettere in server.c int semid = getSemid(ftok(KEYFILE, 'k'), 2); + resetServerSem(semid); + semOp(semid, 0, 2); // aperura semaforo per connessione dei 2 client semOp(semid, 0, 0); // aspetto che si connettano i 2 client diff --git a/src/custom_sem.c b/src/custom_sem.c index 69acec9..a634fcc 100644 --- a/src/custom_sem.c +++ b/src/custom_sem.c @@ -1,5 +1,6 @@ #include #include + #include #include #include @@ -13,21 +14,21 @@ void semOp(int semid, short sem_num, short sem_op) { } int getSemid(key_t key, int size){ - int semid = semget(key, size, S_IRUSR | S_IWUSR); + int semid = semget(key, size, S_IRUSR | S_IWUSR | IPC_CREAT); if (semid == -1) { errExit("semget", "getSemid"); } - unsigned short val[size]; - for (int i=0; i