这是困难的一个。
sem_open
无论系统上没有信号量的名称如何(因此没有名称重叠的机会),都无法创建名为 semaphore ( ) 的 POSIX 。这是一个能够使用 shmget 创建共享内存的非特权用户。
平台:Solaris 10
硬件:Intel Xeon E5000 系列 CPU
在使用非特权用户运行 AMD CPU 的其他 Solaris 10 平台上不会发生。在 Linux 机器上不会发生。这些机器之间没有明显的区别,除了这台机器很可能是虚拟化的。
代码:
const char* name = "/permission_test_semaphore";
sem_t* sem = sem_open(name, O_CREAT | O_EXCL, 0644, 0);
if (SEM_FAILED == sem)
{
printf("Could not create test semaphore %s, errno = %d\n", name, errno);
}
输出是:
Could not create test semaphore /permission_test_semaphore, errno = 13
欢迎任何想法 - 我的希望没有实现。