forked from selfboot/CS_Offer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Linux_OS_Shm_Client.cpp
46 lines (38 loc) · 963 Bytes
/
Linux_OS_Shm_Client.cpp
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
38
39
40
41
42
43
44
45
46
/*
* @Author: xuelangZF
* @Date: 2016-06-09 20:18:58
* @Last Modified time: 2016-06-09 20:38:31
* Refer to: https://www.cs.cf.ac.uk/Dave/C/node27.html
*/
#include <sys/shm.h>
#include <stdio.h>
#include <stdlib.h>
#define SHMSZ 27
int main()
{
int shmid;
key_t key;
char *shm, *s;
// We need to get the segment named "5678", created by the server.
key = 5678;
// Locate the segment.
if ((shmid = shmget(key, SHMSZ, 0666)) < 0) {
perror("shmget");
exit(1);
}
// Now we attach the segment to our data space.
if ((shm = (char *)shmat(shmid, NULL, 0)) == (char *) -1) {
perror("shmat");
exit(1);
}
// Now read what the server put in the memory.
for (s = shm; *s != 0; s++)
putchar(*s);
putchar('\n');
/*
* Finally, change the first character of the segment to '*',
* indicating we have read the segment.
*/
*shm = '*';
exit(0);
}