linux显示shm segment信息一例

来源:互联网 发布:熟丝桃子圈微博全数据 编辑:程序博客网 时间:2024/06/11 08:36
#include <stdio.h>#include <sys/shm.h>#include <sys/stat.h>int main(void){ int segment_id; char* shared_memory; const int size = 4096; unsigned short mode; struct shmid_ds shmbuffer; segment_id = shmget(IPC_PRIVATE, size, S_IRUSR|S_IWUSR); shared_memory = (char*)shmat(segment_id, NULL, 0); sprintf(shared_memory, "shared memory"); printf("%s\n", shared_memory); if (shmctl(segment_id, IPC_STAT, &shmbuffer) == - 1) {  fprintf(stderr, "Unable to access segment %d\n", segment_id);  return -1; } printf("ID \t\t KEY \t MODE \t\t OWNER \t SIZE \t ATTTACHES \n"); printf("-- \t\t --- \t ---- \t\t ----- \t ---- \t --------- \n"); printf("%d \t %d \t",segment_id,shmbuffer.shm_perm.__key); mode = shmbuffer.shm_perm.mode; /** OWNER */ if (mode & 0400)  printf("r"); else  printf("-"); if (mode & 0200)  printf("w"); else  printf("-"); if (mode & 0100)  printf("a"); else  printf("-"); /** GROUP */ if (mode & 0040)                printf("r");        else                printf("-");        if (mode & 0020)                printf("w");        else                printf("-");        if (mode & 0010)                printf("a");        else                printf("-"); /** WORLD */ if (mode & 0004)                printf("r");        else                printf("-");        if (mode & 0002)                printf("w");        else                printf("-");        if (mode & 0001)                printf("a");        else                printf("-");  printf("    \t%4d\t",shmbuffer.shm_perm.uid); printf(" %d\t",shmbuffer.shm_segsz); printf(" %d\t",shmbuffer.shm_nattch); printf("\n%d", mode);  printf("\n");  shmdt(shared_memory); shmctl(segment_id, IPC_RMID, NULL); fprintf(stdout, "\n%d", segment_id); return 0;}

原创粉丝点击