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
| #include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/stat.h>
#include <sys/msg.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#define SHMKEY 654321
int shmid,msqid;
void *ptr_mem_partagee;
typedef struct Athlete {
int tps;
int pid;
int id;
char nomathlete[30];
}a;
a athlete;
void temps(int s);
int main()
{
int i;
//on va chercher l'id du segment mémoire de la clé
if ((shmid = shmget(SHMKEY, 1*sizeof(a), 0444)) < 0)
{
perror("shmget");
exit(1);
}
//on met le segment en mémoire partagée
if ((ptr_mem_partagee = shmat(shmid, NULL, 0)) == (void*) -1)
{
perror("shmat");
exit(1);
}
for(i=0;i<20;i++)
{
athlete = *((a*)ptr_mem_partagee + i);
if(athlete.tps!=0)
{
printf("Id de l'athlete: %d\n",athlete.id);
printf("Nom de l'athlete : %s",athlete.nomathlete);
temps(athlete.tps);
}
}
return 0;
}
void temps(int s)
{
int min;
int sec;
min=s/60;
sec=s % 60;
if(sec/10 == 0) printf("Temps du tour : %d'0%d''\n\n",min,sec);
else printf("Temps du tour : %d'%d''\n\n",min,sec);
} |
Partager