C,C++ & Linux
C/C++ utime(2)
KyooDong
2020. 5. 19. 12:20
728x90
utime(2) 함수 기능
파일의 atime(Access Time), mtime(Modification Time) 을 수정하는 함수입니다.
struct utimbuf 구조
struct utimbuf {
time_t actime; // 접근 시간
time_t modtime; // 수정 시간
};
함수 원형
#include <utime.h>
#include <sys/types.h>
int utime(const char *filepath, const struct utimbuf *time);
매개변수
filepath
대상 파일의 경로
time
변경될 시간
반환값
성공 시 0 리턴
에러 시 -1 리턴하고 errno 설정
예제
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <utime.h>
int main(int argc, char *argv[]) {
struct utimbuf time_buf;
struct stat statbuf;
int fd;
for (int i = 1; i < argc; i++) {
// 원래 atime, mtime을 가져옴
stat(argv[i], &statbuf);
// 파일을 열었기 때문에 access time이 갱신됨
fd = open(argv[i], O_RDWR | O_TRUNC);
close(fd);
// 하지만 time_buf에 갱신되기 전의 atime, mtime 을 설정
time_buf.actime = statbuf.st_atime;
time_buf.modtime = statbuf.st_mtime;
// 갱신되기 전의 시간을 설정하므로 프로그램 실행 후에도 atime, mtime 은 변하지 않음
if (utime(argv[i], &time_buf) < 0) {
fprintf(stderr, "utime error\n");
continue;
}
}
exit(0);
}
결과
리눅스시스템프로그래밍 저자 : 홍지만
https://book.naver.com/bookdb/book_detail.nhn?bid=14623672
책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)