Linux программирование в примерах
Linux программирование в примерах читать книгу онлайн
В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Это значит: «если
t1.tv_sect2.tv_sect1.tv_usect2.tv_usec14.3.2. Файловое время в микросекундах:
utimes()В разделе 5.5.3 «Изменение временных отметок:
utime()utime()utimes()#include <sys/time.h> /* XSI */int utimes(char *filename, struct timeval tvp[2]);Аргумент
tvpstruct timevaltvpNULLPOSIX обозначает ее как «традиционную» функцию, что означает, что она стандартизуется лишь для поддержки старого кода и не должна использоваться для новых приложений. Главная причина, пожалуй, в том, что нет определенного интерфейса для получения времени доступа и изменения файла в микросекундах;
struct stattime_tstruct timevalОднако, как упоминалось в разделе 5.4.3 «Только Linux: указание файлового времени повышенной точности», Linux 2.6 (и более поздние версии) действительно предоставляет доступ к временным отметкам с разрешением в наносекунды при помощи функции
stat()utimes()14.3.3. Интервальные таймеры:
setitimer()getitimer()Функция
alarm()sleep()alarm()SIGALRMSIGALRMИнтервальный таймер подобен многократно использующимся сигнальным часам. Вы устанавливаете начальное время, когда он должен «сработать», а также как часто это должно впоследствии повторяться. Оба этих значения используют объекты
struct timevalСуществуют три различных таймера, описанных в табл. 14.2.
Таблица 14.2. Интервальные таймеры
| Таймер | Сигнал | Функция |
|---|---|---|
ITIMER_REAL | SIGALRM | Работает в реальном режиме |
ITIMER_VIRTUAL | SIGVTALRM | Работает, когда процесс выполняется в режиме пользователя |
ITIMER_PROF | SIGPROF | Работает, когда процесс выполняется в режиме пользователя или ядра. |
Использование первого таймера,
ITIMER_REALSIGALRMSIGALRMsetitimer()alarm()sleep()sleep()alarm()SIGALRMВторой таймер,
ITIMER_VIRTUALТретий таймер,
ITIMER_PROFITIMER_VIRTUALITIMER_PROF#include <sys/time.h> /* XSI */int getitimer(int which, struct itimerval *value);int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);Аргумент
whichgetitimer()struct itimervalvaluesetitimer()valueovalueovalue NULLstruct itimervalstruct timeval
