Я столкнулся с той же проблемой с некоторым C-кодом, над которым я работаю, поэтому я написал простую C-программу для удаления семафоров по имени.
вот код:
#include <semaphore.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char *argv[]) {
for (int i = 1; i < argc; i++) {
if (sem_unlink(argv[i]) != 0) {
fprintf(stderr, "%s: ", argv[1]);
perror("");
}
}
}
после компиляции вы можете вызвать программу из терминала со списком имен семафоров, которые необходимо удалить следующим образом:
$ ./semrm <name_1> <name_2> ... <name_n>
при условии, что исполняемый файл называется semrm