Home | History | Annotate | Download | only in solaris
      1 /* Tests simple manipulation with a shared memory segment. */
      2 
      3 #include <stdio.h>
      4 #include <sys/shm.h>
      5 
      6 #define SEGMENT_SIZE 167
      7 
      8 int main(int argc, const char *argv[])
      9 {
     10    int shmid = shmget(IPC_PRIVATE, SEGMENT_SIZE, IPC_CREAT | SHM_R | SHM_W);
     11    if (shmid < 0) {
     12       perror("shmget()");
     13       return 1;
     14    }
     15 
     16    void *addr = shmat(shmid, NULL, 0);
     17    if (addr == (void *) -1) {
     18       perror("shmat()");
     19       return 2;
     20    }
     21 
     22    struct shmid_ds stats;
     23    int ret = shmctl(shmid, IPC_STAT, &stats);
     24    if (ret != 0) {
     25       perror("shmctl(IPC_STAT)");
     26       return 3;
     27    }
     28 
     29    printf("segment size: %zu\n", stats.shm_segsz);
     30 
     31    ret = shmdt(addr);
     32    if (ret != 0) {
     33       perror("shmdt()");
     34       return 4;
     35    }
     36 
     37    ret = shmctl(shmid, IPC_RMID, NULL);
     38    if (ret != 0) {
     39       perror("shmctl(IPC_RMID)");
     40       return 5;
     41    }
     42 
     43    return 0;
     44 }
     45