Files
CMC/clock_up.c

86 lines
2.7 KiB
C

#include <stdio.h>
#include <time.h>
#include <unistd.h> // для sleep() и usleep()
#include <signal.h> // для обработки сигналов
// Функция определения времени года на английском
const char* get_season(int month) {
if (month == 12 || month == 1 || month == 2)
return "Winter";
else if (month >= 3 && month <= 5)
return "Spring";
else if (month >= 6 && month <= 8)
return "Summer";
else
return "Autumn";
}
// Функция названия месяца на английском
const char* get_month_name(int month) {
const char* months[] = {"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"};
if (month >= 1 && month <= 12)
return months[month - 1];
else
return "Unknown";
}
// Функция названия дня недели на английском
const char* get_weekday_name(int weekday) {
const char* days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
if (weekday >= 0 && weekday <= 6)
return days[weekday];
else
return "Unknown";
}
// Обработчик сигнала SIGINT (Ctrl+C)
void handle_sigint(int sig) {
// Показываем курсор обратно и делаем перенос строки
printf("\033[?25h\n");
fflush(stdout);
// Выход из программы
_exit(0);
}
int main(int argc, char *argv[]) {
// Устанавливаем обработчик сигнала SIGINT
signal(SIGINT, handle_sigint);
// Скрываем курсор
printf("\033[?25l");
fflush(stdout);
while (1) {
time_t rawtime;
struct tm * timeinfo;
// Получаем текущее время
time(&rawtime);
timeinfo = localtime(&rawtime);
const char* season = get_season(timeinfo->tm_mon + 1);
const char* month_name = get_month_name(timeinfo->tm_mon + 1);
const char* weekday_name = get_weekday_name(timeinfo->tm_wday);
// Возвращаем курсор в начало строки
printf("\r %d\033[90m/\033[0m%s\033[90m/\033[0m%s \033[90;1m|\033[0m %d\033[90m/\033[0m%s \033[90;1m|\033[0m %02d\033[90m:\033[0m%02d\033[90m:\033[0m%02d",
timeinfo->tm_year + 1900,
season,
month_name,
timeinfo->tm_mday,
weekday_name,
timeinfo->tm_hour,
timeinfo->tm_min,
timeinfo->tm_sec);
fflush(stdout);
sleep(1); // Спим одну секунду
}
return 0;
}
// gcc clock_up.c -o clock_up