Advertisement
Tobiahao

S01_SEMAFORY_01b

Dec 17th, 2017
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.89 KB | None | 0 0
  1. /*
  2. Napisz dwa programy. Pierwszy stworzy semafor i zainicjuje go war- tością dodatnią, a następnie poczeka, aż drugi program ustawi wartość tego semafor na zero i dopiero wtedy zakończy się.
  3. */
  4.  
  5. // Program drugi
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <sys/ipc.h>
  10. #include <sys/types.h>
  11. #include <sys/sem.h>
  12.  
  13. #define FTOK_PATH "/tmp"
  14. #define FTOK_ID 712
  15.  
  16. void sem_down(int semset_id)
  17. {
  18.     struct sembuf down_operation = {0, -1, 0};
  19.  
  20.     if(semop(semset_id, &down_operation, 1) == -1){
  21.         perror("down_semop");
  22.         exit(EXIT_FAILURE);
  23.     }
  24.     printf("Program 2: Zeruje program!\n");
  25. }
  26.  
  27. int main(void)
  28. {
  29.     key_t key;
  30.     int semset_id;
  31.  
  32.     if((key = ftok(FTOK_PATH, FTOK_ID)) == -1){
  33.         perror("ftok");
  34.         return EXIT_FAILURE;
  35.     }
  36.  
  37.     if((semset_id = semget(key, 1, 0775)) == -1){
  38.         perror("semget");
  39.         return EXIT_FAILURE;
  40.     }
  41.  
  42.     sem_down(semset_id);
  43.  
  44.     return EXIT_SUCCESS;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement