Потому что это явно указано в коде:
pos = sprintf(buf, " %02d:%02d:%02d ",
realtime->tm_hour, realtime->tm_min, realtime->tm_sec);
Исполняемый файл uptime
из пакета procps
(, например. Ubuntu)вызывает функцию с именем print_uptime()
. Эта функция живет вproc/whattime.c
в источниках procps
. Функция просто выводит строку, созданнуюsprint_uptime()
в том же исходном файле C, который строит выводную строку побитно.
Первый бит, добавляемый к строке, добавляется с начальным пробелом, как показано выше.
Пространство существует с по крайней мере с 2002 в procps
реализации uptime
.
Обратите внимание, что uptime -p
не выводит пробел:
$ uptime -p
up 8 weeks, 8 hours, 41 minutes
$ uptime --version
uptime from procps-ng 3.3.12
Как заметил maxxvw , версия утилиты GNU coreutils использует аналогичный тип вывода.
Утилита uptime
в системах BSD отличается от формата вывода:
$ uptime
11:56PM up 23:58, 1 user, load averages: 0.04, 0.02, 0.00
Отказ от ответственности :Я не могу сказать точно, но это мое предположение.
Чтение невыровненного ввода непосредственно с устройства.
Чтение и запись выровненных данных без использования внутренних буферов ОС или L *кэширования.
Подводя итог, если вы хотите вообще избежать кэширования OS/L *, просто выберите вариант direct
ввода-вывода. Если вы пытаетесь избежать только кэширования чтения, nocache
должно быть достаточно.