Страница 1 из 1

Проблема с realtime очередью

Добавлено: 29 мар 2006, 15:08
atony

Код: Выделить всё

#include <mqueue.h> // определена стуктура mq_attr
#include <errno.h>
mqd_t mqd;
char qname[32] = “/msgq.0”;
struct mq_attr attr; 

attr.mq_maxmsg = 256; // кол-во сообщений в очереди
attr.mq_msgsize = 5; // длина сообщения
// по умолчанию mq_maxmsg = 10, mq_msgsize = 8192
// параметры по умолчанию не подходят! 

if ( mqd = mq_open(qname, O_CREAT | O_RDWR, 0644, &attr) == –1 ){
     perror ("MQ_OPEN");
}

Результат работы : MQ_OPEN: Bad file descriptor
Тоже самое, но без атрибутов, никаких ошибок не выдает
if ( mqd = mq_open(qname, O_CREAT | O_RDWR, 0644, 0) == –1 ){
   perror ("MQ_OPEN");
}
Есть подозрение на то, что у процесса нет прав, так как не под root-ом запускается прога. Попробовали запустить под root-ом все получилось. Вопрос: можно ли изменять непривелигированным пользователям атрибуты очереди ?

Добавлено: 29 мар 2006, 15:49
Llama
м... может быть что-то можно сделать ?
что-нить типа dev.rtc.max-user-freq только для интересующего параметра? Если нет - запускать процесс от root, устанавливать нужные параметры и сбрасывать привелегии с помощь setuid

Добавлено: 29 мар 2006, 15:52
Foxx
afaik без предварительных попущений со стороны root-а или свистелок типа suid и sudo - нет. Предложу man capabilities - way (linuxcaps имхо то что надо по сабжу).