이번에는 시간을 나타내는 함수들을 알아본다. 컴퓨터의 시간은 1970.01.01이 기준으로 지금까지
흘러간 시간을 초(sec)단위로나타낸다.
time_t time(time_t *)
time_t 는 찾아보면 iong int형으로 define되어 있다.
long int __time_t
이 함수는 현재 시간 및 날짜를 나타태는 함수이다. 단, 위에서도 말했듯이 1970.01.01기준이라는
것을 명심하자.
gettimeofday(struct timeval *restirct tp, void *restrict tzp);
struct timeval
{
time_t
페이지 207마지막 줄에 나와있다. 마이크로초단위로 시간을 나타내는 함수.
일단, 참고만 한다.
아래 그림은 gmtime함수를 이용하여 날짜와 시간등을 나타내는 것
1.2차원 배열로 원하는 문자열을 초기화(요일)을 만든다.
그리고 가장 핵심부분은 time_t iTime에서 설정한 숫자와 gmtime함수가 되겠다.
gmtime의 반환형이 time_t형이므로 변수 iTime을 선언하였다. iTime의 숫자는 2013녀 9월.9일 9시 16분50초
를 초로 계산한 값이다. (단, 한달에 28일, 31일같은 월은 전부 30일로 계산하였다. 그래서 아래 실행에서는
다소 오차가 발생한다. 그러나, 9시 16분 50초는 정확히 나온다.)
이것을 gmtiem함수 인자로 넣는다. gmtime(&iTime), 인자가 포인터형이라서 주소 '&'붙여서 넣었다.
그러면 아래 printf문과 같이 출력이 하면 된다.
strftime함수는 위에서 일일이 하나하나 화면에 출력했던 것을 한 번에 출력한다. (위에는 개노가다 ㄷㄷ)
gmtime에서 반환한 값을 4번째 인자에 넣으면, 그것에 버퍼에 지정되 크기만큼 3번째 인자의 형식처럼 출력된다.
정리하자면, 다음과 같다.
1.버퍼
2.크기
3.문자열(주소, 여기서는 출력 형식)
4.화면에 출력할 값. 자료형은 struct tm* 형이다.
tm구조체가 time.h헤더 파일에 정의되어 있다.
아래 소스는 atexit()함수가 역순으로 종료됨을 보요주는 소스
이것은 책에서 예제 소스.
원래 실행되고 종료되는 순서는 다음과 같다.
1. main()함수 시작.
2. main()안에 있는 함수 호출 및 실행.
3. 함수 종료
4. main()함수 끝
이런 순서이다. 그러나 이소스에서는 atexit()함수는 좀 다르다.
exit()함수의 일종으로 원래는 exit()함수또한 종료할 때 쓰인다. exit()함수는 각각의 프로세스를 닫는다.
예를 들어서, open()함수로 파일을 열었을 경우 close()함수로 닫아야 하는데, 중간에 exit()함수를 써도
알고리즘적으로 close()까지 처리하고 종료한다. return 0로 그렇지 않다. 그러나 exit()함수는 조심해야한다.
만약에
exit 등록된 함수를 역순으로 종료한다. atexit()함수 또한 역순으로 프로세스를 처리한다.
실행결과
first exit handler
first exit handler
second exit handler
환경변수 environ을 이용한 소스.
'unix > unix 실습' 카테고리의 다른 글
9월 10일 공유라이브러리와 jmp함수 (0) | 2013.09.10 |
---|---|
9월 2일 파일과 디렉토리1.(정리 미완성) (0) | 2013.09.02 |