added client
This commit is contained in:
parent
5b21f06e04
commit
9daf445702
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue