Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- zad4
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/ipc.h>
- #include <sys/sem.h>
- #define PERMS 0666
- main()
- {
- int semid = -1;
- if ((semid = semget(ftok("/tmp",0), 1, IPC_CREAT | PERMS)) < 0)
- perror("blad tworzenia semafora");
- else semctl(semid,0,IPC_RMID,0);
- perror("usuwanie");
- return 0;
- }
- ----------------------------------------------------------------------------------------------------------------
- zad1
- #include <sys/types.h>
- #include <sys/ipc.h>
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- key_t klucz;
- klucz = ftok("/etc/hosts",4); //plik musi być bo jak nie to ftok zwróci -1
- printf("ftok 0x%X\n",klucz);
- }
- ----------------------------------------------------------------------------------------------------
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/ipc.h>
- #include <sys/sem.h>
- #define PERMS 0666
- static struct sembuf op_lock[2] = {
- 0,0,0, /* czekaj, aż semafor nr 0 stanie się zerem */
- 0,1,0 /* następnie zwiększ ten semafor 1*/
- };
- static struct sembuf op_unlock[1] = {
- 0, -1, IPC_NOWAIT /* zmniejsz semafor nr 0 o 1 bez czekania bo to zwolnienie zasobów */
- };
- void blokuj(int semid)
- {
- if (semop(semid, &op_lock[0], 1)<0)
- perror("blad lokowania semafora");
- }
- void odblokuj(int semid)
- {
- if (semop(semid, &op_unlock[0], 1) < 0)
- perror("blad odlokowania semafora");
- }
- main()
- {
- int semid = -1; // identyfikator semafora
- int co;
- int jeszcze;
- if ((semid = semget(ftok("/tmp",0), 1, IPC_CREAT | PERMS)) < 0)
- perror("blad tworzenia semafora");
- printf("Podaj Polecenie\n 1 - podnies semafor\n 2 - opusc semafor\n 0 - wyjscie\n");
- for (jeszcze = 1;jeszcze;)
- {
- scanf("%d",&co);
- printf("wybrano %d\n",co);
- switch(co)
- {
- case 2:
- {
- printf("przed blokuj\n");
- blokuj(semid);
- printf("po blokuj\n");
- break;
- }
- case 1:
- {
- printf("przed odblokuj\n");
- odblokuj(semid);
- printf("po odblokuj\n");
- break;
- }
- case 0:
- {
- jeszcze = 0;
- break;
- }
- default:
- {
- printf("nie rozpoznana komenda %d\n",co);
- }
- }
- }
- }
- -
- -----------------------------------------------------------------------------------------------------------------------
- zad2#include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/ipc.h>
- #include <sys/sem.h>
- #define PERMS 0666
- static struct sembuf op_lock[1] = {
- 0, -1, 0
- };
- static struct sembuf op_unlock[1] = {
- 0, 1, 0
- };
- void blokuj(int semid)
- {
- if (semop(semid, &op_lock[0], 1)<0)
- perror("blad lokowania semafora");
- }
- void odblokuj(int semid)
- {
- if (semop(semid, &op_unlock[0], 1) < 0)
- perror("blad odlokowania semafora");
- }
- main()
- {
- int semid = -1; // identyfikator semafora
- int co;
- int jeszcze;
- if ((semid = semget(ftok("/tmp",0), 1, IPC_CREAT | PERMS)) < 0)
- perror("blad tworzenia semafora");
- printf("Podaj Polecenie\n 1 - podnies semafor\n 2 - opusc semafor\n 0 - wyjscie\n");
- for (jeszcze = 1;jeszcze;)
- {
- scanf("%d",&co);
- printf("wybrano %d\n",co);
- switch(co)
- {
- case 2:
- {
- printf("przed blokuj\n");
- blokuj(semid);
- printf("po blokuj\n");
- break;
- }
- case 1:
- {
- printf("przed odblokuj\n");
- odblokuj(semid);
- printf("po odblokuj\n");
- break;
- }
- case 0:
- {
- jeszcze = 0;
- break;
- }
- default:
- {
- printf("nie rozpoznana komenda %d\n",co);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement