Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. #include <semaphore.h>
  2. #include <sys/types.h>
  3. #include <sys/wait.h>
  4. #include <sys/stat.h>
  5. #include <sys/mman.h>
  6. #include <sys/shm.h>
  7. #include <unistd.h>
  8. #include <iostream>
  9. #include <cstring>
  10. #include <fstream>
  11. #include <stdio.h>
  12. #include <fcntl.h>
  13.  
  14. using namespace std;
  15.  
  16. #define MEMORY_ONE "/shm_one"
  17. #define SEMAPHORE_ONE "/sem_one"
  18. #define SIZE 4096
  19.  
  20. int main() {
  21.  
  22. int mc_fd;
  23. char * ptr;
  24.  
  25. // Open SHARED MEMORY
  26. mc_fd = shm_open(MEMORY_ONE, O_RDWR, 0666);
  27. if(mc_fd == -1) {
  28. cerr << "Fallimento nell'apertura della memoria condivisa" << endl;
  29. exit(-1);
  30. }
  31.  
  32. // Map SHARED MEMORY
  33. ptr = (char *) mmap(NULL, SIZE, PROT_WRITE, MAP_SHARED, mc_fd, 0);
  34. if(ptr == MAP_FAILED) {
  35. cerr << "Fallimento nella mappatura" << endl;
  36. exit(-1);
  37. }
  38.  
  39. // Open SEMAPHORE
  40. sem_t * sem_id = sem_open(SEMAPHORE_ONE, 0);
  41.  
  42. cout << "WEBCAM avviata..." << endl;
  43. // -----------------------------------------------------------------
  44. sem_wait(sem_id);
  45. cout << "Start -> SEZIONE CRITICA!" << endl;
  46.  
  47. const char * message[] = {
  48. "Hello",
  49. "Shared",
  50. "Memory!"
  51. };
  52. ftruncate(mc_fd, sizeof(message));
  53. for (int i = 0; i < strlen(* message); i++) {
  54. sprintf(ptr, "%s ", message[i]);
  55. ptr += strlen(message[i]);
  56. }
  57.  
  58. sem_post(sem_id);
  59. cout << "Stop -> SEZIONE CRITICA!" << endl;
  60. // -----------------------------------------------------------------
  61. cout << "WEBCAM disattivata..." << endl;
  62.  
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement