X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=mem%2Fmem.c;fp=mem%2Fmem.c;h=95e43f90b58654b4b75bd5217b3b9dc067fb36fe;hb=1652ed72479279c701c0779fc01aceed40ca4101;hp=0000000000000000000000000000000000000000;hpb=c3a3595decdb2968e7d8ca7178581503b1b6e7b5;p=TD_SE.git diff --git a/mem/mem.c b/mem/mem.c new file mode 100644 index 0000000..95e43f9 --- /dev/null +++ b/mem/mem.c @@ -0,0 +1,49 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#define nbchar 4096 + +int main() +{ + int fd, res; + char *partage = NULL; + char *message = ""; + fd = shm_open("partage.mem", O_RDWR | O_CREAT, 0600); /* ouverture du segment partagé */ + if (fd == -1) { /* et création du nom (du fichier) */ + perror("shm_open"); + exit(1); + } + res = ftruncate(fd, nbchar); /* choix de la taille du segment */ + if (res == -1) { + perror("ftruncate"); + exit(1); + } + partage = (char *)mmap(NULL, nbchar, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (partage == MAP_FAILED) { + perror("mmap"); + exit(1); + } + strncpy(partage, message, nbchar); + while (strcmp(partage, message) == 0) { + sleep(1); + } + fprintf(stdout, "la réponse est %s\n", partage); + res = munmap(partage, nbchar); + if (res == -1) { + perror("munmap"); + exit(1); + } + close(fd); /* fermeture du fichier */ + res = shm_unlink("partage.mem"); /* suppression du nom */ + if (res == -1) { + perror("shm_unlink"); + exit(1); + } + return 0; +}