关于 POSIX 信号量以及不同 Linux 发行版之间兼容性的问题

问题描述 投票:0回答:1

如果我在系统根目录创建一个 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 ;
}

这在不同发行版之间兼容吗?像这样在系统根目录创建信号量会让人不安吗?

抱歉,如果这是一个非常基本的问题,我正在自学,似乎无法在网上找到答案。任何和所有帮助将不胜感激。

c++ linux posix semaphore
1个回答
0
投票

三个信号量名称必须以单个斜杠开头并且不包含其他斜杠:

https://man7.org/linux/man-pages/man7/sem_overview.7.html

命名信号量由

/somename
形式的名称标识;也就是说,一个以空结尾的字符串最多
NAME_MAX-4
(即 251)个字符,由首字母组成 斜杠,后跟一个或多个字符,其中没有一个 是斜杠

因此您的代码应该可以在任何 Linux 系统上运行

© www.soinside.com 2019 - 2024. All rights reserved.