나는 파일의 마지막 수정 시간을 얻는 데 필요한 C 프로그램을 만들고있다. 프로그램이 수행하는 기능은 디렉토리 내의 각 파일을 반복하는 함수이며 특정 파일이 발견되면 파일의 마지막 수정 시간을 확인하는 또 다른 함수를 호출합니다. 내가 ll 명령은 내가 mylog.txt.1
과 mylog.txt.2
는 4 일에 수정 된 및 mylog.txt.3
는 3 일에 수정 된 것을 볼 수 있습니다 사용하여 리눅스에서 디렉토리를 나열 할 때 디렉토리 내에서리눅스에서 파일의 마지막 수정 시간 얻기
는 mylog.txt.1
, mylog.txt.2
및 mylog.txt.3
등이있다.
그러나 프로그램이 각 파일을 검사 할 때 항상 3rd 3rd를 반환합니다. 아래는 내가 사용하고있는 코드입니다.
void getFileCreationTime(char *filePath)
{
struct stat attrib;
stat(filePath, &attrib);
char date[10];
strftime(date, 10, "%d-%m-%y", gmtime(&(attrib.st_ctime)));
printf("The file %s was last modified at %s\n", filePath, date);
date[0] = 0;
}
나는 st_ctime
, 즉 st_mtime
및 st_atime
의 모든 다른 변화를 시도했지만 그들은 모두 반환 3 월.
도움을 주셔서 감사합니다.
어쩌면 정리 첫째 : 버퍼가 긴 10 동안 왜 strftime''20의 크기를 통과? 왜'stat'의 반환 값을 확인하지 않겠습니까? 'stat'가 실패하면 쓰레기 값을 파싱합니다. – mvds
@mvds 오모자입니다. – Boardy
다른 파일 경로를 전달하고 있는지 확인하십시오. "마지막 변경 시간"을 찾고있는 경우 "attrib.st_ctime"은 "마지막 상태 변경 시간"을 제공합니다. " attrib.st_mtime " – ray