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
| #include<stdio.h>
#include<sys/shm.h>
#include<sys/stat.h>
int main ()
{
int segment_id;
char* shared_memory;
struct shmid_ds shmbuffer;
int segment_size;
const int shared_segment_size = 0x6400;
/*Allouelesegmentdemémoirepartagée.*/
segment_id = shmget (IPC_PRIVATE, shared_segment_size,
IPC_CREAT | IPC_EXCL | S_IRUSR | S_IWUSR);
/*Attachelesegmentdemémoirepartagée.*/
shared_memory = (char*) shmat (segment_id, 0, 0);
printf ("mémoirepartagéeattachéeàl'adresse%p\n", shared_memory);
/*Déterminelatailledusegment.*/
shmctl (segment_id, IPC_STAT, &shmbuffer);
segment_size = shmbuffer.shm_segsz;
printf ("tailledusegment:%d\n", segment_size);
/*Écritunechaînedanslesegmentdemémoirepartagée.*/
sprintf (shared_memory, "Hello,world.");
/*Détachelesegmentdemémoirepartagée.*/
shmdt (shared_memory);
/*Réattachelesegmentdemémoirepartagéeàuneadressedifférente.*/
shared_memory = (char*) shmat (segment_id, (void*) 0x5000000, 0);
printf ("mémoirepartagéeréattachéeàl'adresse%p\n", shared_memory);
/*Affichelachaînedelamémoirepartagée.*/
printf ("%s\n", shared_memory);
/*Détachelesegmentdemémoirepartagée.*/
shmdt (shared_memory);
/*Libèrelesegmentdemémoirepartagée.*/
shmctl (segment_id, IPC_RMID, 0);
return 0;
} |
Partager