#include <time.h>
#include <stdio.h>
int main() {
time_t t = (time_t)(1L << (sizeof(time_t)*8 - 9));
printf("%d\n", sizeof(time_t));
}
это должно быть 1 вместо 9, но ctime не обрабатывает большую дату:
8 - Sun Jun 13 07:26:08 1141709097
Моя система (64 бита, конечно) время может выполнить даже 1 миллион лет больше. Решение состоит в том, чтобы обновить системы к 64 битам.
Выгода - то, что программы не могут обработать его. Особенно старый, propertary и не сохраняемый. Devs привыкли к следующим фактам:
int
32 бита (на самом деле, они сохраняются как 32 бита в 64-разрядных системах среди других, потому что предполагалось, что они всегда - 32 бита),time_t
) может безопасно быть литым на int
В популярном программном обеспечении FLOSS обе вещи, вероятно, не пройдут через 'многие глаза' обзор. На менее популярном и propertary это будет largly зависеть от автора.
Я предполагаю на свободном *, отклоняют мир, 2038 станет 'незамеченным', в то время как я действительно ожидаю проблемы на "propertary" платформах (т.е. те, которые имеют большое количество propertary программного обеспечения) - особенно, если часть crutial части не будет сохраняться.
Причина позади ls -a
показ .
и ..
не имеет никакого отношения к утилите и всему, чтобы сделать с Unix (и Linux) файловые системы.
Все - файл.
Каталоги являются действительно файлами, которые содержат списки файлов. "В" любом данном каталоге, потому что это - перспектива пользователя, если не точно перспектива файловой системы, существует два специальных файла.
.
, ссылка на текущий рабочий каталог. Это используется людьми почти каждый день, когда они делают вещи как выполнение команды в текущем каталоге через ./scriptname
...
ссылка на родительский каталог CWDs. Как .
, ..
используется каждый день всеми, кто требует изменить каталоги на родительский каталог через cd ..
.Системный вызов getdents()
, который является рабочей лошадью на системной стороне ls
, просто перечисляет все файлы в каталоге. (помните: все - файл. устройства, каталоги, сокеты, и т.д. таким образом, они все обнаруживаются),
Со служебной стороны вещей, автора (авторов) ls
команда предоставила много возможностей и комбинаций опций, которые позволяют нам отфильтровывать определенные части, или типы информации, например, @Gilles прокомментировал выше этого ls -A
покажет весь dotfile, за исключениями .
и ..
. Все эти опции могли быть рассмотрены, выполнив последующую обработку возможности. Они влияют на то, что отображено ls
, не, чем найден ls
.
Нет действительно никакой причины явно перечислить .
и ..
, по умолчанию, так как все мы знаем, что они там, что они для, и когда использовать их.
Может определенно быть полезно смочь иметь некоторую опцию видеть их, хотя при поиске и устранении неисправностей странных проблем полномочий.
Проверьте страницу справочника для getdents()
¹. Это объясняет немного больше о том, как это работает и включает исходный код для примера программы, с которым можно скомпилировать gcc -Wall
, который перечисляет все файлы в каталоге.
—
1. По крайней мере, страница справочника Ubuntu для getdents()
кажется, имеет пример кода.
ls
обычно не отображается .
и ..
. По умолчанию, ls
скрывает все файлы, имя которых начинается с a .
(отметьте точкой файлы). ls -a
отображает их, потому что Вы попросили показывать все. Некоторые версии ls
имейте немного отличающуюся опцию, ls -A
, показать все точечные файлы, но нет .
или ..
.
Показ .
может быть полезным, если Вы перечисляете больше, чем имена; например, ls -la
сообщают полномочия и владение текущего каталога и его родителя вдоль тех из файлов в каталоге.