LINUX.ORG.RU

Ответ на: комментарий от bj

Которые работают с POSIX таймстампом.

Нет никакой причины, по которой POSIX timestamp не может работать после 2038 года. Это количество секунд от определённого события. Что с ним будет после 2038 года?

Вот что оно не влезет в 32 бита после 2038 года — это правда. Но, во-первых, к тому моменту 64-битные системы будут, наверное, даже в наручных часах, а во-вторых, новые языки программирования и платформы даже на 32-битных осях используют представление времени, которое продолжит работать и после 38-го года, если только от системы такое время удастся получить.

proud_anon ★★★★★
()
Ответ на: комментарий от bj

Типа, чтобы на 32-битном недоразумении тоже работали?

Дык, будут, если ты правильно объявишь тип переменной, а не будешь фигней с интами маяться!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

может стоило язык выбрать?

А что, есть что-то кроме C/C++ ?

normann ★★★
() автор топика

Все POSIX функции (и не только) вполне работают. Главное, чтобы time_t был хотя бы 64битный.

sergej ★★★★★
()
Ответ на: комментарий от bj

Они будут работать, если будешь все правильно делать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от normann

Эту проблему уже, наверное, лет 10 как решили! Так что обнови свой древний glibc!

Eddy_Em ☆☆☆☆☆
()

Ок, ну раз вы так все настаиваете что оно будет работать, то...

Всем спасибо.

normann ★★★
() автор топика
Ответ на: комментарий от normann

sizeof(time_t) == 4

Это неверно! Бабам задниц резать не будут:

--> cat timec.c
#include <stdio.h>
#include <time.h>

int main(int argc, char **argv) {
	printf("%lu\n", sizeof(time_t));
}
--> gcc timec.c
--> ./a.out    
8
У тебя просто, наверное, 32-битный линукс виндовс до сих пор.

proud_anon ★★★★★
()

Размер time_t - на совести системной libc, насколько я помню.

Deleted
()

А в OpenBSD эту проблему в последнем релизе решили, главная фича была :)

Harald ★★★★★
()
Ответ на: комментарий от anonymous

а что за принц, у них у всех бзик на царскую тематику?

anonymous
()
Ответ на: комментарий от normann

Что с ним будет после 2038 года?

Он превратится в 1970-й

В 1970 он привратился бы году эдак в 2106. Учи матчасть.

anonymous
()
Ответ на: комментарий от anonymous

А вы, случайно, не принц?

Нет, это у нас митрополит всея Си.

proud_anon ★★★★★
()
Ответ на: комментарий от anonymous

Википедия говорит, что the consensus is for time_t to be signed, and this is the usual practice, то есть не 2**32-1, а 2**31-1.

anonymous
()
Ответ на: комментарий от Sorcerer

Ничего, к 2038 году 32-битных уже точно не будет.

Но в любом случае, кто ищет, тот всегда найдет, как избавиться от идиотизма с 32-битным time_t!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от normann

Он 4 байта, а 4 байта заканчиваются после 38-го

vault ~> cat ts.c        
#include <stdio.h>
#include <time.h>

int main()
{
        printf("%lu\n", sizeof(time_t));
        return 0;
}
vault ~> clang ts.c -o ts
vault ~> ./ts
8
vault ~> uname -a
OpenBSD vault 5.5 GENERIC.MP#315 amd64

Используй правильные операционные системы.

hateyoufeel ★★★★★
()
Ответ на: комментарий от anonymous
denis@denis-pc:~/Рабочий стол$ cat > test.c
#include <stdio.h>
#include <time.h>

int main()
{
        printf("%lu\n", sizeof(time_t));
        return 0;
}
denis@denis-pc:~/Рабочий стол$ gcc test.c
denis@denis-pc:~/Рабочий стол$ ./a.out 
8
denis@denis-pc:~/Рабочий стол$ uname -a
Linux denis-pc 3.13.0-30-generic #55-Ubuntu SMP Fri Jul 4 21:40:53 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
denis@denis-pc:~/Рабочий стол$ 
PolarFox ★★★★★
()
Ответ на: комментарий от Eddy_Em

Для любителей 32-битной архитектуры тоже есть решение!

Для любителей 32-битной архитектуры лучшим решением будет закопаться.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Шел 2038 год. Народ продолжал сидеть на патченой-перепатченой 32-битной Windows XP.

devl547 ★★★★★
()
Ответ на: комментарий от hateyoufeel

А как ты предлагаешь поставить 64-битное ведро на 32-битное железо? А такого, между прочим, еще дохренища!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

К 2038 году его вряд ли будет достаточное количество для того, чтобы беспокоиться об этом.

Звучит расточительно, но правда.

Deleted
()
Ответ на: комментарий от Deleted

Возможно. Сейчас уже даже микроконтроллеры как-то все ближе и ближе к 64 битам подбираются.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

А как ты предлагаешь поставить 64-битное ведро на 32-битное железо?

Зачем? Можно просто дропнуть старый ABI и сделать time_t 8-байтовым. В OpenBSD 5.5, например, так и сделали. На всех платформах сразу, даже на 32-битных.

hateyoufeel ★★★★★
()
Ответ на: комментарий от Eddy_Em

пусть openbsd ставят, там даже в 32 битной всё работает

odii
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.