Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SERWER:
- //
- // gcc ms.c -oms.o -lncurses
- //
- #include <stdlib.h>
- #include <errno.h>
- #include <sys/types.h>
- #include <sys/ipc.h>
- #include <sys/sem.h>
- #include <sys/shm.h>
- #include <signal.h>
- #include <ncurses.h>
- #define PERM 0660 // prawa dostepu
- #define KLUCZ_SEM (key_t)1232
- #define KLUCZ_MEM (key_t)0x10
- void koniec() {
- curs_set(1);
- clear();
- refresh();
- endwin();
- if(shmctl(id_mem, IPC_RMID, NULL) == -1)
- perror("\n S. MEM_RMID error ");//usuwanie pamięci współdzielonej
- printf("\n Ctrl_C Serwera\n\n");
- exit(EXIT_SUCCESS);
- }
- int main(void) {
- signal(SIGINT, koniec);
- if ((id_mem=shmget(KLUCZ_MEM, 400*sizeof(int), PERM | IPC_CREAT | IPC_EXCL))==-1) { ////size int rozmiar do odwoływania się
- perror("\n S. MEM_CREAT error ");
- exit(EXIT_FAILURE);
- }
- if ((adres = (int *)shmat(id_mem,0, 0)) == ((int *)-1)) { //shmat powoduje, że uzyskujemy wskaźnik do pamięci współdzielonej
- perror("\n S. MEM_SHMAT error ");
- if(shmctl(id_mem, IPC_RMID, NULL) == -1)
- perror("\n S. MEM_RMID error ");
- exit(EXIT_FAILURE);
- }
- initscr();
- curs_set(0);
- start_color();
- clear();
- int i,j;
- for(i=0;i<20;i++)
- {
- for(j=0;j<20;j++)
- {
- move(j,i*4);
- printw("[0 ]");
- }
- }
- refresh();
- while(1) {
- for(i=0;i<20;i++)
- {
- for(j=0;j<20;j++)
- {
- ww =*(adres+j*20+i);
- move(j,i*4+1);
- printw("%d",ww);
- }
- }
- ww = *(adres+0); //*(adres) wyłuskanie adresu i przypisanie do zmiennej ww
- move(5,19); printw("%d",ww);//
- ww = *(adres+1);//
- move(5,33); printw("%d",ww);
- k++; move(1,2); printw("%x", k);
- refresh();
- sleep(3);
- }
- }
- ---------------------------------------------------------------------
- KLIENT:
- //
- // gcc mk.c -omk.o
- //
- #include <unistd.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <errno.h>
- #include <sys/types.h>
- #include <sys/ipc.h>
- #include <sys/sem.h>
- #include <sys/shm.h>
- #include <signal.h>
- #define PERM 0660 // prawa dostepu
- #define KLUCZ_SEM (key_t)1232
- #define KLUCZ_MEM (key_t)0x10
- int main(int argc, char *argv[]) {
- int id_mem, ww;
- int *adres;
- short nr, wart;
- if (argc<3) {
- printf("\n Brak argumentow : numer[0..1], wartosc [...], czas operacji [sek] \n\n");
- exit(EXIT_FAILURE);
- }
- nr=atoi(argv[1]);
- wart=atoi(argv[2]);
- if ((id_mem=shmget(KLUCZ_MEM, 2*sizeof(int),0))==-1) {
- perror("\n S. memget error ");
- exit(EXIT_FAILURE);
- }
- if ((adres= (int *) shmat(id_mem,0,0)) == ((int *)-1)) {
- perror("\n S. MEM_SHMAT error ");
- exit(EXIT_FAILURE);
- }
- printf("\n %d. Start. Mem[%d] -> %d Opoz= %d",id_mem, nr, wartop);
- fflush(stdout);
- *(adres+nr)+=wart; //zapisywanie do wartości
- printf("\n %d. . Mem[%d] ",id_mem, nr);
- fflush(stdout);
- printf("\n %d.Koniec. Mem[%d] \n\n",id_mem, nr);
- fflush(stdout);
- exit(EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement