// shmCreateAndWrite.c#include<stdio.h>#include<sys/ipc.h>#include<sys/shm.h>#include<sys/stat.h>intmain(){intsegment_id;charbogus;char*shared_memory;structshmid_dsshmbuffer;intsegment_size;constintshared_segment_size=0x6400;/* Allocate a shared memory segment. */segment_id=shmget(IPC_PRIVATE,shared_segment_size,IPC_CREAT|IPC_EXCL|S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP);/* Attach the shared memory segment. */printf("Shared memory segment ID is %d\n",segment_id);shared_memory=(char*)shmat(segment_id,0,0);printf("shared memory attached at address %p\n",shared_memory);/* Determine the segment's size. *//*
shmctl (segment_id, IPC_STAT, &shmbuffer);
segment_size = shmbuffer.shm_segsz;
printf ("segment size: %d\n", segment_size);
*//* Write a string to the shared memory segment. */sprintf(shared_memory,"Hello, world.");/* Detach the shared memory segment. */shmdt(shared_memory);printf("Wrote Hello World to the segment\n");}
// shmDeleteExisting.c#include<stdio.h>#include<sys/ipc.h>#include<sys/shm.h>#include<sys/stat.h>intmain(){intsegment_id;printf("Enter the shared memory id: ");scanf("%d",&segment_id);/* Deallocate the segment. */shmctl(segment_id,IPC_RMID,0);return0;}
// shmReadExisting.c#include<stdio.h>#include<sys/ipc.h>#include<sys/shm.h>#include<sys/stat.h>intmain(){intsegment_id;charbogus;char*shared_memory;structshmid_dsshmbuffer;intsegment_size;constintshared_segment_size=0x6400;printf("Enter the shared memory id: ");scanf("%d",&segment_id);/* Reattach the shared memory segment, at a different address. */shared_memory=(char*)shmat(segment_id,(void*)0x5000000,0);printf("shared memory reattached at address %p\n",shared_memory);/* Print out the string from shared memory. */printf("The contents of the shared memory is:\n%s\n",shared_memory);/* Detach the shared memory segment. */shmdt(shared_memory);return0;}
// shmWriteExisting.c#include<stdio.h>#include<sys/ipc.h>#include<sys/shm.h>#include<sys/stat.h>#include<time.h>intmain(){intsegment_id;charbogus;char*shared_memory;structshmid_dsshmbuffer;intsegment_size;constintshared_segment_size=0x6400;time_tt;time(&t);printf("Enter the shared memory id: ");scanf("%d",&segment_id);/* Reattach the shared memory segment, at a different address. */shared_memory=(char*)shmat(segment_id,(void*)0x5000000,0);printf("shared memory reattached at address %p\n",shared_memory);/* Add to the segment */sprintf(shared_memory,"Modified the segment at %s",ctime(&t));/* Print out the string from shared memory. */printf("The contents of the shared memory is:\n%s",shared_memory);printf("#################################################\n");return0;}