#include #include #include #include #include /* for exit */ /* * shm-server - not sure of the origin of code segment. * Old source, not sure of the origin * possibly: David Marshalls course : http://www.cs.cf.ac.uk/Dave/C/CE.html * or Steve Holmes : http://www2.its.strath.ac.uk/courses/c/ */ #define SHMSZ 27 int main() { char c; int shmid; key_t key; char *shm, *s; /* * We'll name our shared memory segment * "5678". */ key = 5678; /* * Create the segment. */ if( (shmid = shmget(key, SHMSZ, IPC_CREAT | 0666)) < 0 ) { perror("shmget"); exit(1); } /* * Now we attach the segment to our data space. */ if( (shm = shmat(shmid, NULL, 0)) == (char *) -1 ) { perror("shmat"); exit(1); } /* * Now put some things into the memory for the * other process to read. */ s = shm; for( c = 'a'; c <= 'z'; c++ ) *s++ = c; /* post fix */ *s = (char) NULL; /* * Finally, we wait until the other process * changes the first character of our memory * to '*', indicating that it has read what * we put there. */ while( *shm != '*' ) sleep(1); return 0; }