Как получить время, оставшееся от ранее установленного будильника, не меняя его значения? - PullRequest
0 голосов
/ 21 декабря 2018

Можно ли узнать, сколько времени осталось для тревоги, которая была предварительно установлена ​​с помощью системного вызова alarm(), но без изменения ее текущего значения?Если это возможно, как я могу получить это?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Вы можете узнать количество оставшихся секунд, вызвав сигнал тревоги (0) и посмотрев на возвращаемое значение.Это не соответствует вашему требованию не изменять текущее значение, потому что вызов alarm (0) отменяет любой ожидающий сигнал тревоги.Вы можете снова вызвать тревогу, передав оставшееся количество секунд, которое вы только что прочитали, и это сбросит тревогу.Проблема в том, что он не очень точен и точно не имитирует поведение исходного аварийного вызова, потому что разрешение по времени составляет всего одну секунду.Если вы это сделаете, ваше время может быть почти на целую секунду, но, возможно, это нормально.

Судя по вашему вопросу, вы, возможно, уже думали обо всех этих проблемах и читали этого человека.страницы так же, как у меня.Я до сих пор не нашел точного ответа на ваш вопрос, но я хотел предложить свой неточный ответ на тот случай, если вам этого достаточно.

0 голосов
/ 21 декабря 2018

К сожалению, нет.

Современные альтернативы, такие как timer_gettime, разрешают такого рода запросы ожидающих сигналов тревоги, но почтенный alarm() вызов не позволяет.

Вы можете очистить и заново установить alarm(), как вы предложили в своем посте, или, если вы установите alarm() самостоятельно, вы, конечно, можете вычислить и запомнить ожидаемое время истечения.(Предостережение: alarm() вызов имеет точность только в одну секунду.)

...