UNIX 如果查询一个共享内存已经被IPCRM,程序中如何操作保证安全
来源:互联网 发布:淘宝客如何取得代码 编辑:程序博客网 时间:2024/06/01 10:23
进程内可以用根据ipc_perm的mode成员SHM_DEST位进行判断
#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;}
运行ipcs -m查看共享内存,,此时status为空
ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00bc614e 32768 root 666 1024 1
ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00bc614e 32768 root 666 1024 1
删除shmid为32768的共享内存,此时status为dest,而key变为0x00000000
ipcrm -m 32768
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 32768 root 666 1024 1 dest
ipcrm -m 32768
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 32768 root 666 1024 1 dest
输入字符,屏幕输出
destroy segment when # attached = 0 因为我们手工删除了共享内存,
- UNIX 如果查询一个共享内存已经被IPCRM,程序中如何操作保证安全
- Unix中多程序间共享内存
- 【linux共享内存】ipcs&ipcrm
- 如何保证同时只有一个程序在系统中运行
- WinCE的C#程序中判断一个程序是否已经启动,如果没有启动就启动,如果启动了就显示已经启动的程序
- 日常工作中,如何保证数据安全?
- 多线程中如何去保证线程安全
- 如何保证数据库安全
- VPN如何保证安全
- 如何保证数据库安全
- 如何保证线程安全?
- 共享内存查看清除命令ipcs和ipcrm
- 共享内存查看清除命令ipcs和ipcrm
- 共享内存shmat shmget shmdt shmctl ipcs ipcmk ipcrm
- 共享内存查看清除命令ipcs和ipcrm
- 如果已经在一个类中定义了全局函数,在其它类文件中如何调用它?
- 在JAVA中ArrayList如何保证线程安全
- unix下共享内存
- View Documentation in Web Using [openoffice.org 3+swftools+flexpaper]
- selenium常用知识点(二)
- zoj1959-Quadtree II
- 视频编码
- shell if
- UNIX 如果查询一个共享内存已经被IPCRM,程序中如何操作保证安全
- live555多线程改造
- mac pro 15 视网膜屏下 开发Android有 bugs
- vi 使用
- 判断数值奇偶
- Python Matplotlib安装方法以及使用
- JavaScript的转义序列
- 缓存、缓存算法和缓存框架简介
- Yii验证