1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
#include<stdio.h>
#include<stdlib.h>
#include<sys/ipc.h>
#include<sys/types.h>
#include<sys/shm.h>
#define PATH_SHARED "key_shared.lock"
struct repart_struct{
int repartTab[4][4];
};
struct nombre_de{
int reader;
int joueur;
};
main(){
key_t cle_shared_repart;
key_t cle_shared_nombre;
int shid_nombre;
int shid_repart;
struct repart_struct* repartition;
struct nombre_de* nombre_de;
printf("SERVEUR DAMEMO : MAJ 2006-04-07\n");
if((cle_shared_nombre=ftok(PATH_SHARED,1))<0){
perror("Erreur Ftok");
exit(EXIT_FAILURE);
}
if((shid_nombre = shmget(cle_shared_nombre,sizeof(struct nombre_de),IPC_CREAT|0666))<0){
perror("Erreur shmget");
exit(EXIT_FAILURE);
}
if((nombre_de = (struct nombre_de*)shmat(shid_nombre,NULL,0)) ==(void*)-1 ){
perror("Erreur attach nombre_de");
exit(EXIT_FAILURE);
}
printf("SHARED MEMORY : nombre de : ID : %d, cle : %d\n",shid_nombre,cle_shared_nombre);
if((cle_shared_repart=ftok(PATH_SHARED,22))<0){
perror("Erreur Ftok");
exit(EXIT_FAILURE);
}
if((shid_repart = shmget(cle_shared_repart,sizeof(struct repart_struct),IPC_CREAT|0666))<0){
perror("Erreur shmget");
exit(EXIT_FAILURE);
}
if((repartition = (struct repart_struct*)shmat(shid_repart,NULL,0)) ==(void*)-1 ){
perror("Erreur attach nombre_de");
exit(EXIT_FAILURE);
}
printf("SHARED MEMORY : repartition : ID : %d, cle : %d\n",shid_repart,cle_shared_repart);
init(&repartition);
printf("%d\n",repartition->repartTab[0][0]);
afficheRepartition(&repartition);
}
void afficheRepartition(struct repart_struct* repartition){
int i,j;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
switch(j){
case 0 : printf("Nb de joueur : ");break;
case 1 : printf("Nb de pion de chaque joueur : ");break;
case 2 : printf("Nb de pion caché : ");break;
case 3 : printf("Nb de pion visible : ");break;
}
printf("%d ",repartition->repartTab[i][j]);
}
printf("\n");
}
}
void init(struct repart_struct* repartition){
repartition->repartTab[0][0]= 2;
repartition->repartTab[0][1]= 7;
repartition->repartTab[0][2]= 7;
repartition->repartTab[0][3]= 7;
repartition->repartTab[1][0]= 3;
repartition->repartTab[1][1]= 7;
repartition->repartTab[1][2]= 7;
repartition->repartTab[1][3]= 0;
repartition->repartTab[2][0]= 4;
repartition->repartTab[2][1]= 5;
repartition->repartTab[2][2]= 4;
repartition->repartTab[2][3]= 4;
repartition->repartTab[3][0]= 5;
repartition->repartTab[3][1]= 4;
repartition->repartTab[3][2]= 4;
repartition->repartTab[3][3]= 4;
} |
Partager