|
|
- #include <sys/types.h>
- #include <sys/ipc.h>
- #include <sys/shm.h>
- #include <stdio.h>
- #include <unistd.h>
- #include <string.h>
-
- #define SHMSZ 1024
-
- main(int argc, char **argv)
- {
- char c, tmp;
- int shmid;
- key_t key;
- char *shm, *s;
-
- /*
- * Shared memory segment at 1234
- * "1234".
- */
- key = 1234;
-
- /*
- * Create the segment and set permissions.
- */
- if ((shmid = shmget(key, SHMSZ, IPC_CREAT | 0666)) < 0) {
- perror("shmget");
- return 1;
- }
-
- /*
- * Now we attach the segment to our data space.
- */
- if ((shm = shmat(shmid, NULL, 0)) == (char *) -1) {
- perror("shmat");
- return 1;
- }
-
- /*
- * Zero out memory segment
- */
- memset(shm,0,SHMSZ);
- s = shm;
-
- /*
- * Read user input from client code and tell
- * the user what was written.
- */
- while (*shm != 'q'){
- sleep(1);
- if(tmp == *shm)
- continue;
-
- fprintf(stdout, "You pressed %c\n",*shm);
- tmp = *shm;
- }
-
- if(shmdt(shm) != 0)
- fprintf(stderr, "Could not close memory segment.\n");
-
- return 0;
- }
|