Недопустимое значение тайм-аута очереди сообщений в Linux ⇐ Linux
-
Anonymous
Недопустимое значение тайм-аута очереди сообщений в Linux
Я пытаюсь отправить и получить сообщение с помощью 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; Функция работает без ошибок
Может кто-нибудь сказать мне, почему я получаю сообщение об ошибке при установке параметра наносекунд?
Я пытаюсь отправить и получить сообщение с помощью 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; Функция работает без ошибок
Может кто-нибудь сказать мне, почему я получаю сообщение об ошибке при установке параметра наносекунд?
Мобильная версия