c – 在没有root权限的情况下实现共享内存
我有以下C程序
#include <stdio.h>
#include <sys/types.h>
#include <sys/shm.h>
#include <sys/ipc.h>
int main()
{
key_t shm_key;
int shm_flag,shm_id,shm_size;
void *shm_addr;
shm_key = ftok("/home/meow/Arena",22);
perror("SHMKEY");
shm_id = shmget(shm_key,sizeof(int)*20,IPC_CREAT);
perror("SHMGET");
shm_addr = shmat(shm_id,NULL,0);
perror("SHMAT");
}
当我没有root权限执行时,我得到了
meow@darkArts ~/Arena/c $gcc shm.c && ./a.out
SHMKEY: Success
SHMGET: Success
SHMAT: Permission denied
当root用户执行时,我收到以下消息
root@darkArts:/home/meow/Arena/c# gcc shm.c && ./a.out
SHMKEY: Success
SHMGET: Success
SHMAT: Success
是否可以在没有root权限的情况下将共享内存绑定到我的地址空间?
编辑:使用shmid = shmget(键,SHMSZ,IPC_CREAT | 0666);和shmid = shmget(key,SHMSZ,IPC_CREAT | 0777);我明白了
meow@darkArts ~/Arena/c $gcc shm.c && ./a.out
SHMKEY: Success
SHMGET: Permission denied
SHMAT: Invalid argument