如何使用sem_open为不同用户访问相同的semphore

时间:2019-01-23 05:58:22

标签: semaphore

我已经使用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()中使用信号灯的名称约定,以便多个用户可以访问它?

1 个答案:

答案 0 :(得分:0)

您正在为其他用户设置只读权限。

0644的意思是:

    所有者的
  • 6个(读写)
  • 其他组用户
  • 4(只读)
  • 其他任何人
  • 4(只读)

根据手册页:

  

应该对将访问信号量的每一类用户都授予读写权限。