home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / DoderoG / C_files / sh_mem1.c < prev    next >
C/C++ Source or Header  |  1996-11-20  |  801b  |  39 lines

  1. #include <sys/types.h>
  2. #include <sys/ipc.h>
  3. #include <sys/shm.h>
  4.  
  5. #define K 1024
  6. #define SHMkey 77
  7. int shmid; /* ident. della memoria condivisa */
  8.  
  9. main()
  10. {    int i, *pint;
  11.     void *ind1;
  12.     extern void *shmat();
  13.     extern cleanup();
  14.  
  15.  
  16.     signal (32,cleanup);
  17.    shmid=shmget (SHMkey, 12*K, 0777|IPC_CREAT );
  18.     /* IPC_CREAT per crearla se non esiste */
  19.    ind1=shmat(shmid, 0, 0); 
  20.     /* posso accedere attraverso il pt. ind1 */
  21.    printf("ind1=0x%x\n",ind1);
  22.    pint= (int *) ind1;
  23.    for (i=0; i<25; i++)
  24.     *pint++=i;
  25.    pint= (int *) ind1;
  26.    *pint= 100;
  27.     /*l'altro processo aspetta qualcosa nonzero */
  28.    for (i=0; i<25; i++)
  29.     printf("posizione %d\tvalore %d\n", i, *pint++);
  30.    pause();
  31.     /* do' il tempo all'altro di partire e lavorare */
  32. }
  33.  
  34. cleanup()
  35. {
  36.    shmctl(shmid, IPC_RMID, 0);
  37.    exit();
  38. }
  39.