Когда мог вызов ко времени (ПУСТОЙ) сбой на Linux

Если они определяются общественность в исходном классе, Вы не можете переопределить их, чтобы быть частными в Вашем производном классе. Однако Вы могли заставить открытый метод выдать исключение и реализовать Вашу собственную закрытую функцию.

Редактирование: Jorge Ferreira корректен.

7
задан Alex B 15 October 2009 в 12:16
поделиться

4 ответа

Возможно, вы работаете на встроенном устройстве, которое не имеет часов реального времени.

Исходный код glibc утверждает, что системный вызов времени не может завершиться ошибкой в ​​Linux:

 time_t res = INTERNAL_SYSCALL (time, err, 1, NULL);
  /* There cannot be any error.  */

и это действительно так, если вы посмотрите исходный код ядра:

SYSCALL_DEFINE1(time, time_t __user *, tloc)
{
        time_t i = get_seconds();

        if (tloc) {
                if (put_user(i,tloc))
                        return -EFAULT;
        }
        force_successful_syscall_return();
        return i;
}
17
ответ дан 6 December 2019 в 10:01
поделиться

У вас есть так называемые системные часы. Если это сломано, то это не удастся, хотя может быть много других причин.

0
ответ дан 6 December 2019 в 10:01
поделиться

В дополнение к приведенным выше ответам конструктор является деталью реализации. Интерфейс определяет контракт, который описывает его поведение, а не то, как он собирается.

По этой причине вы не можете заставить разработчика иметь конкретный конструктор. Я думаю, что что бы вы ни пытались сделать, интерфейс не подходит.


Обновление : В этой статье Инструмент обработки аннотаций описывается, как вы можете создать обработчик аннотаций и аннотаций, которые вступят в силу во время компиляции и проверьте, что у класса есть конструктор без аргументов.

Его можно адаптировать для работы с конструктором с одним аргументом, который принимает экземпляр карты.

Чтобы процитировать статью, его использование будет похоже на:

2
ответ дан 6 December 2019 в 10:01
поделиться

Очевидным случаем может быть система, внутренние часы которой требуют внешней инициализации (например, с использованием NTP). Пока это не произошло, внутренние часы не могут давать значения, относящиеся к эпохам, хотя их можно использовать для измерения интервалов. time_t зависит от эпохи, поэтому time (NULL) в этом случае должен завершиться ошибкой.

0
ответ дан 6 December 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: