added client

This commit is contained in:
Lorenzo Bianchi 2023-05-15 10:43:25 +02:00
parent 5b21f06e04
commit 9daf445702
3 changed files with 14 additions and 9 deletions

View File

@ -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

View File

@ -5,17 +5,20 @@
#include <server.h>
#include <structures.h>
#include <custom_sem.h>
#include <custom_shm.h>
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

View File

@ -1,5 +1,6 @@
#include <sys/sem.h>
#include <sys/stat.h>
#include <custom_sem.h>
#include <structures.h>
#include <errExit.h>
@ -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<size; i++) { // temporaneo
val[i] = 0;
}
return semid;
}
// mette i semafori a 0
void resetServerSem(int semid){
unsigned short val[2] = {0, 0};
union semun arg;
arg.array = val;
if (semctl(semid, 0 , SETALL, arg) == -1) {
errExit("semctl", "getSemid");
}
return semid;
}