Недопустимое значение тайм-аута очереди сообщений в 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; Функция работает без ошибок

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

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