Недопустимое значение тайм-аута очереди сообщений в LinuxLinux

Ответить
Anonymous
 Недопустимое значение тайм-аута очереди сообщений в Linux

Сообщение Anonymous »


Я пытаюсь отправить и получить сообщение с помощью API очереди сообщений Linux

для получения я использую функцию после открытия msgq и получения дескриптора файла msgq: mq_timedreceive (mqd_t mqdes, char *msg_ptr, size_t msg_len, без знака *msg_prio, const struct timespec *abs_timeout)

Я хочу установить таймаут с разрешением в миллисекундах следуя документации, функция получает абсолютное время структура timespec тм; Я использую clock_gettime(CLOCK_REALTIME, &tm), чтобы получить текущее время Мне нужен тайм-аут 100 мс, поэтому я добавляю к результату nano_секунды tm: tm.tv_nsec+= 100; со следующими параметрами: mq_timedreceive (mqdes,buffer,buffer_len,NULL,&tm); Я получаю сообщение об ошибке (errno) EINVAL – неверный параметр

НО когда я меняю только второй параметр tm: tm.tv_sec+=1; Функция работает без ошибок

Может кто-нибудь сказать мне, почему я получаю сообщение об ошибке при установке параметра наносекунд?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»