Есть проблема с созданием семафора не под root.
Подскажите плиз! Как заставить это работать?
В общем пример (из книги Уильяма Стивенса UNIX взаимодействие процессов)
мне не удалось запустить не из под root.
#include <...>
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
int main(int argc, char *argv[])
{
int c, flags;
sem_t *sem;
unsigned int value;
flags |= O_RDWR|O_CREAT;
value = 1;
while((c = getopt(argc, argv,"ei:")) != -1){
switch(c){
case 'e':
flags |= O_EXCL;
break;
case 'i':
value = atoi(optarg);
break;
}
}
if(optind != argc - 1){
printf("usage: semcreate [-e] [-i initval] <name>");
return -1;
}
sem = sem_open(argv[optind], flags, FILE_MODE, value);
if(sem == SEM_FAILED) {
printf("sem_open: Error %s\n", strerror(errno));
return -2;
}
sem_close(sem);
return 0;
}