Хрестоматия по программированию на Си в Unix


Системные вызовы и взаимодействие с UNIX. Хрестоматия по программированию на Си в Unix - стр. 5


(st.st_mode & 0111) != 0

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

Время в UNIX.

6.2.1. Напишите функцию, переводящую год, месяц, день, часы, минуты и секунды в число секунд, прошедшее до указанного момента с 00 часов 00 минут 00 секунд 1 Января 1970 года. Внимание: результат должен иметь тип long (точнее time_t).

Эта функция облегчит вам сравнение двух моментов времени, заданных в общепринятом "человеческом" формате, поскольку сравнить два long числа гораздо проще, чем сравнивать по очереди годы, затем, если они равны - месяцы, если месяцы равны - даты, и.т.д.; а также облегчит измерение интервала между двумя событиями - он вычисляется просто как разность двух чисел. В системе UNIX время обрабатывается и хранится именно в виде числа секунд; в частности текущее астрономическое время можно узнать системным вызовом

#include <sys/types.h>

#include <time.h>

time_t t = time(NULL); /* time(&t); */

Функция

struct tm *tm = localtime( &t );

разлагает число секунд на отдельные составляющие, содержащиеся в int-полях структуры:

tm_year год (надо прибавлять 1900) tm_yday день в году 0..365 tm_mon номер месяца 0..11 (0 - Январь) tm_mday дата месяца 1..31 tm_wday день недели 0..6 (0 - Воскресенье) tm_hour часы 0..23 tm_min минуты 0..59 tm_sec секунды 0..59

Номера месяца и дня недели начинаются с нуля, чтобы вы могли использовать их в качестве индексов:

char *months[] = { "Январь", "Февраль", ..., "Декабрь" }; printf( "%s\n", months[ tm->tm_mon ] );

Пример использования этих функций есть в приложении. Установить время в системе может суперпользователь вызовом

stime(&t);

6.2.2. Напишите функцию печати текущего времени в формате ЧЧ:ММ:СС ДД-МЕС-ГГ. Используйте системный вызов time() и функцию localtime().

Существует стандартная функция ctime(), которая печатает время в формате:

/* Mon Mar 25 18:56:36 1991 */ #include <stdio.h>




- Начало -  - Назад -  - Вперед -



Книжный магазин