lstat를 이용해서 directory scan 및 file 찾기
현재 directory에 CLI_aaa, CLI_bbb, CLI_ccc file3개가 있고
만들어진 날짜가 다를때 가장 오래된 file 2개를 찾아서 그파일을
삭제하는 코드를 짜려고 합니다. 더 어떻게 해야하는지
고수님좀 도와주세요... ㅡ.ㅡ
#include <unistd.h>
#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>
#include <stdlib.h>
int count_CLI_log(char *logdir_name,char *loguser_name)
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;
int CLI_logcnt = 0;
int i;
if((dp=opendir(logdir_name)) == NULL)
{
printf("error: opendir fail\n");
return(-1);
}
while((entry=readdir(dp)) != NULL)
{
if(strstr(entry->d_name, loguser_name))
{
lstat(entry->d_name,&statbuf);
printf("%s %d\n",entry->d_name,statbuf.st_mtime);
CLI_logcnt++;
}
}
closedir(dp);
return(CLI_logcnt);
}
int main()
{
int log_cnt,number;
log_cnt=count_CLI_log(".","CLI_");
printf("log_cnt %d\n",log_cnt);
}
답변입니다.
먼저 opendir 로 디렉토리를 열고 readdir 을 이용하여 entry를 하나씩 받습니다. 당연히 for문안에서...
그러면 파일을 하니씩 볼 수 있는데 stat라는 함수를 이용해서 파일 날짜를 구하실수 있습니다.
stat(const char *file_name, struct stat *st);
비교하는 알고리즘은 본인이 하시면 될 것 같고...
마지막으로 파일을 지우는 함수는
unlink(const char *pathname); 사용하세요...
/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/
댓글 달기