|
|
- #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 shmid;
- key_t key;
- char *shm, *s;
-
- /*
- * We need to get the segment named
- * "1234", created by the server.
- */
- key = 1234;
-
- /*
- * Locate the segment.
- */
- if ((shmid = shmget(key, SHMSZ, 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;
-
- /*
- * Client writes user input character to memory
- * for server to read.
- */
- for(;;){
- char tmp = getchar();
- // Eat the enter key
- getchar();
-
- if(tmp == 'q'){
- *shm = 'q';
- break;
- }
- *shm = tmp;
- }
-
- if(shmdt(shm) != 0)
- fprintf(stderr, "Could not close memory segment.\n");
-
- return 0;
- }
|