如果我在系统根目录创建一个 POSIX 信号量:
#include <fcntl.h>
#include <semaphore.h>
#include <sys/stat.h>
std::string semName = "/MySemaphore" ;
int main(void)
{
sem_t* MySemaphore = sem_open(semName.c_str(), O_CREAT, S_IRUSR | S_IWUSR | S_IGRP | S_IWGRP, 0) ;
// uses for synchronization with another process until its no longer needed
sem_close(MySemaphore) ;
sem_unlink(semName.c_str()) ;
return 0 ;
}
这在不同发行版之间兼容吗?像这样在系统根目录创建信号量会让人不安吗?
抱歉,如果这是一个非常基本的问题,我正在自学,似乎无法在网上找到答案。任何和所有帮助将不胜感激。
三个信号量名称必须以单个斜杠开头并且不包含其他斜杠:
https://man7.org/linux/man-pages/man7/sem_overview.7.html
命名信号量由
形式的名称标识;也就是说,一个以空结尾的字符串最多/somename
(即 251)个字符,由首字母组成 斜杠,后跟一个或多个字符,其中没有一个 是斜杠NAME_MAX-4
因此您的代码应该可以在任何 Linux 系统上运行