xref: /DragonOS/user/apps/test_shm/receiver.c (revision fae6e9ade46a52976ad5d099643d51cc20876448)
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <sys/mman.h>
5 #include <sys/shm.h>
6 #include <sys/ipc.h>
7 #include <string.h>
8 #include <sys/wait.h>
9 
10 #define SHM_SIZE 9999
11 
12 int main()
13 {
14     int shmid;
15     char *shmaddr;
16     key_t key = 6666;
17 
18     // 测试shmget
19     shmid = shmget(key, SHM_SIZE, 0666 | IPC_CREAT);
20     if (shmid < 0)
21     {
22         perror("shmget failed");
23         exit(EXIT_FAILURE);
24     }
25 
26     // 测试shmat
27     shmaddr = shmat(shmid, 0, 0);
28 
29     char read_buf[20];
30     memcpy(read_buf, shmaddr, 14);
31 
32     printf("Receiver receive: %s\n", read_buf);
33 
34     memset(shmaddr, 0, SHM_SIZE);
35     memcpy(shmaddr, "Reveiver Hello!", 16);
36 
37     shmdt(shmaddr);
38 
39     return 0;
40 }