Ошибка mq_open: неверный аргумент в контейнере Docker - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу открыть очередь posix с max_msgs как 500. Я могу сделать это на моей локальной машине.Но тот же код не работает в контейнере.

В контейнере mq_open () выдает ошибку как недопустимый аргумент, когда attr.mq_maxmsg имеет значение больше 10. Поскольку значение по умолчанию равно 10, для увеличения этого значения процесс должен быть привилегированным, поэтому я установил sbitисполняемого файла и владелец рута.Тем не менее, он выдает ошибку и ведет себя так, как будто процесс не является привилегированным.Ниже приведен фрагмент кода:

struct mq_attr attr;
attr.mq_maxmsg = 11;
attr.mq_msgsize = 500;
mode_t omask;
omask = umask(0);
mqd_t mq_des = mq_open("/1test", O_CREAT | O_RDWR | O_NONBLOCK, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, &attr);

umask(omask);
if( -1 == mq_des )
{
      perror("Error: cPosixQueue:init: " );
      return -1;
}
...