我已经使用root用户使用sem_open()创建了全局信号灯:
sem_t * sem = sem_open(“ ghMutex”,O_CREAT,0644,1);
所以当我这样做时:ls -al / dev / shm /
-rw-r--r-- 1 root root 32 Jan 23 00:23 sem.ghMutex
现在我在Linux中有一个不同的用户(例如User1),它再次调用相同的函数sem_open来创建信号量:
sem_t * sem = sem_open(“ ghMutex”,O_CREAT,0644,1);
在上一次函数调用中,我收到错误EACCES(权限被拒绝),因为已经使用root用户创建了此名称的信号灯。
我的问题:
1)如何为不同的用户创建具有相同名称的信号灯?
2)最好的做法是在sem_open()中使用信号灯的名称约定,以便多个用户可以访问它?
答案 0 :(得分:0)
您正在为其他用户设置只读权限。
0644
的意思是:
根据手册页:
应该对将访问信号量的每一类用户都授予读写权限。