Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rdemeter
GitHub Repository: rdemeter/so
Path: blob/master/lab5/server_mem.c
224 views
1
/*Server pentru memoria partajata*/
2
#include <stdio.h>
3
#include <stdlib.h>
4
#include <unistd.h>
5
#include <sys/mman.h>
6
#include <sys/types.h>
7
#include <fcntl.h>
8
9
/*zona in care va fi mapata memoria*/
10
void *mem;
11
/*descriptorul zonei de memorie*/
12
int shm_fd;
13
14
int main(int argc, char **argv)
15
{
16
shm_fd = shm_open("/MY_SHM3", O_CREAT | O_RDWR, 0644);
17
if (shm_fd < 0) {
18
perror("open():");
19
exit(-1);
20
}
21
22
if (ftruncate(shm_fd, 100) < 0) {
23
perror("truncate():");
24
exit(-1);
25
}
26
mem = mmap(0, 100, PROT_WRITE | PROT_READ, MAP_SHARED, shm_fd, 0);
27
if (mem == MAP_FAILED) {
28
perror("mmap():");
29
exit(-1);
30
}
31
32
((int*)mem)[0] = 1337;
33
printf("Am scris: %d\n", ((int*)mem)[0]);
34
if (munmap(mem, 100) < 0) {
35
perror("munmap():");
36
exit(-1);
37
}
38
39
if (close(shm_fd) < 0) {
40
perror("close():");
41
exit(-1);
42
}
43
44
sleep(10);
45
if (shm_unlink("/MY_SHM2") < 0) {
46
perror("unlink():");
47
exit(-1);
48
}
49
return 0;
50
}
51
52