ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C/C++ utime(2)
    C,C++ & Linux 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

    책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)

    'C,C++ & Linux' 카테고리의 다른 글

    C/C++ rmdir(2)  (0) 2020.05.19
    C/C++ mkdir(2)  (0) 2020.05.19
    C/C++ readlink(2)  (0) 2020.05.18
    C/C++ symlink(2)  (0) 2020.05.18
    C/C++ rename(2)  (0) 2020.05.18

    댓글

Designed by Tistory.