bugfix: throw runtime error early on sem_open fail

Signed-off-by: xbli10 <xbli10@iflytek.com>
This commit is contained in:
xbli10 2025-06-18 18:02:42 +08:00
parent 2db69ced80
commit b2f10371b4

View File

@ -218,7 +218,11 @@ struct IoRingTable {
void init(int cap) {
for (int prio = 0; prio <= 2; ++prio) {
auto sp = "/" + semOpenPath(prio);
sems.emplace_back(sem_open(sp.c_str(), O_CREAT, 0666, 0), [sp](sem_t *p) {
auto ptr = sem_open(sp.c_str(), O_CREAT, 0666, 0);
if (SEM_FAILED == ptr) {
throw std::runtime_error(fmt::format("Failed create a named semaphore, name {}", sp.c_str()));
}
sems.emplace_back(ptr, [sp](sem_t *p) {
sem_close(p);
sem_unlink(sp.c_str());
});