当前位置: 技术问答>linux和unix
关于共享内存的问题:是否只有超级用户可以读写?
来源: 互联网 发布时间:2016-01-21
本文导语: 我用普通用户运行程序,生成一段共享内存,但是这段共享内存却无法读与写,如果切换到root下面执行此程序,又是正常的,用ipcs查看,能看到此共享内存(登录用户创建,奇怪的是只有在root下面用ipcs才可以看到shmid) /* g++ T...
我用普通用户运行程序,生成一段共享内存,但是这段共享内存却无法读与写,如果切换到root下面执行此程序,又是正常的,用ipcs查看,能看到此共享内存(登录用户创建,奇怪的是只有在root下面用ipcs才可以看到shmid)
/*
g++ TestShm1.cpp -o TestShm1.out -lrt
*/
#include
#include
#include
//#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef struct{
char name[4];
int age;
} people;
main(int argc, char** argv)
{
int shm_id,i;
key_t key;
people *p_map;
char* name = "/usr/admin/c1";
key = ftok(name,0);
if(key == -1)
perror("ftok error");
shm_id = shmget(key,4096,IPC_CREAT);
if(shm_id == -1)
{
perror("shmget error");
return 1;
}
cout
/*
g++ TestShm1.cpp -o TestShm1.out -lrt
*/
#include
#include
#include
//#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef struct{
char name[4];
int age;
} people;
main(int argc, char** argv)
{
int shm_id,i;
key_t key;
people *p_map;
char* name = "/usr/admin/c1";
key = ftok(name,0);
if(key == -1)
perror("ftok error");
shm_id = shmget(key,4096,IPC_CREAT);
if(shm_id == -1)
{
perror("shmget error");
return 1;
}
cout