23,118
社区成员
发帖
与我相关
我的任务
分享
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
int main(void)
{
key_t key;
int id;
size_t size;
void *addr;
int ch;
struct shmid_ds buf;
unsigned int mode;
key = ftok("shm.key", 1);
size = 1024;
id = shmget(key, size, SHM_R | SHM_W | IPC_CREAT);
addr = shmat(id, NULL, 0);
while ((ch = getchar()) != EOF) {
shmctl(id, IPC_STAT, &buf);
mode = buf.shm_perm.mode;
(void)printf("%o\n", (unsigned short)mode);
#ifdef SHM_DEST
if (SHM_DEST & mode)
(void)printf("%s\n", "destroy segment when # attached = 0");
#endif
}
shmdt(addr);
shmctl(id, IPC_RMID, NULL);
return 0;
}
IPC status from /dev/mem as of Tue Jun 29 20:37:31 BEIST 2010
T ID KEY MODE OWNER GROUP
Shared Memory:
m 0 0x580022ed --rw-rw-rw- root system
m 1048577 0x0d000553 --rw-rw---- root system
m 1048578 0xffffffff --rw-rw---- root system
m 1048579 0x78000004 --rw-rw-rw- root system
m 4 0x00001515 --rw-rw-rw- hsh1985 member
m 5 0xffffffff --rw-rw-r-- friedric member
m 6 0xffffffff --rw-rw-r-- friedric member
m 7 0xffffffff --rw-rw-r-- friedric member
m 8 0xffffffff --rw-rw-r-- friedric member
m 7340042 0xff2b0a63 --rw-rw-r-- friedric member
m 11 0xff2b0a60 --rw-rw-r-- friedric member
m 12 0xff2b0a5f --rw-rw-r-- friedric member
m 13 0xff2b0a61 --rw-rw-r-- friedric member
m 15728655 0xff2b0491 --rw-rw-r-- friedric member
m 23068688 0xffffffff D-rw------- mymtom member