본문 바로가기

컴퓨터 공학 전공/시스템 프로그래밍

time management

728x90

프로그램에서 time은 크게 calendar time과 Process/CPU time으로 나뉜다.

1. Calendar time

  • UTC (Coordinated Universal Time) / GMT (Greenwich Mean Time): 세계 공통으로 기준이 되는 시간
  • Epoch time: 1970년 1월 1일 00시 00분 00초를 기점으로 하여 몇 초가 지났는지를 나타낸다

2.Process/CPU time

  • 1 tick = 1 ms or 10 ms
  • time = 프로그램이 얼마나 실행되었는지를 쉘에서 보여주는 초 단위의 시간

time과 관련된 함수들을 소개해보겠다.

time_t time (time_t *tloc)

  • tloc: epoch time이 들어간다

정상적인 경우 현재 epoch time이 반환되고 error시 -1이 반환된다

int stime (const time_t *tp)

  • tp: set 할 epoch time

정상적인 경우 0이, error시 -1이 반환된다

tm은 시간과 관련된 변수들이 저장되어 있는 구조체이다. 이 구조체를 이용하여 시간과 관련된 여러 설정을 할 수 있다.

struct tm *localtime (const time_t *clock) // local time

  • clock: epoch time이 들어간다

tm의 포인터가 반환된다

struct tm *gmtime (const time_t *clock) // GMT

  • clock: epoch time이 들어간다

tm의 포인터가 반환된다

epoch time을 넣고 tm 포인터가 반환되면 tm 안에 있는 변수들을 활용하여 tm->tm_yday 같이 년, 월, 일, 시, 분, 초 등을 출력할 수 있다.

time_t mktime (struct tm *timeptr)

  • timeptr: tm에 대한 포인터

정상적인 경우 epoch time이, error시 -1이 반환된다. tm 구조체를 epoch time으로 형식을 변환하는 기능이다.

char *ctime (const time_t *clock)

  • clock: epoch time이 들어간다

time string이 반환된다

char *asctime (const struct tm *tm)

  • tm: tm에 대한 포인터
  • time string이 반환된다

ctime, asctime 모두 time string이 반환되지만 epoch time을 통해 반환하는가, tm을 통해 반환하는가의 차이이다.

size_t strftime (char *s, size_t maxsize, const char *format, const struct tm *timeptr)

  • s: string buffer
  • maxsize: buffer size
  • format: conversion format
  • timeptr: tm pointer

정상적인 경우 s에 있는 문자의 개수가 반환되고 error시 0이 반환된다

strftime은 format에 %A, %d 등 다양한 형식을 지원한다.

이런 식으로 하게 되면 반환 값이 6이 되고 str을 출력하면

Wednesday Jul 11 192 27 28이 된다.

'컴퓨터 공학 전공 > 시스템 프로그래밍' 카테고리의 다른 글

Network  (0) 2020.04.01
Memory Mapped File  (0) 2020.04.01
IPC  (0) 2020.04.01
signal  (0) 2020.04.01
record lock  (0) 2020.04.01