這是一個棘手的問題。由於權限錯誤,無法創建POSIX命名信號(EACCES)
無論系統中沒有信號量的名稱(因此沒有名稱重疊機會),無法創建POSIX命名信號量(sem_open
)。這是一個非特權用戶,可以使用shmget創建共享內存。
平臺:的Solaris 10
硬件:英特爾至強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
任何想法,歡迎 - 我的希望都沒有了。
ipcs與POSIX sems無關。它適用於傳統的sysvipc。 – 2013-02-21 14:40:27
正確 - 雙重檢查。拿出了'ipcs'的參考。謝謝 – Makanaky 2013-02-21 14:42:01