適当なファイルをローテションさせる
仕事のテストでログが2G超するのでサックリ作って埋め込みました。
以下、ソース
ソース
#include <stdio.h> #include <string.h> void LogRotate(char *filename); long GetFileSize(char *filename); int main() { char *filenames[2] = { "file1.txt", "file2.txt" }; int i = 0, j = 0; long fileSize = 0L; for (i = 0; i < 2; i++) { fileSize = GetFileSize(filenames[i]); printf("%s : %ld\n", filenames[i], fileSize); if (fileSize >= 40000000) { LogRotate(filenames[i]); } } return 0; } void LogRotate(char *filename) { int i = 0, index = 0; char searchFileName[512]; char oldFileName[512]; char newFileName[512]; memset(searchFileName, '\0', 512); memset(oldFileName, '\0', 512); memset(newFileName, '\0', 512); do { ++index; sprintf(searchFileName, "%s.%d", filename, index); } while (access(searchFileName, 0) == 0); for (i = index; i > 0; --i) { if (i == 1) { sprintf(oldFileName, "%s", filename); } else { sprintf(oldFileName, "%s.%d", filename, i - 1); } sprintf(newFileName, "%s.%d", filename, i); rename(oldFileName, newFileName); } } long GetFileSize(char *filename) { FILE *fp = fopen(filename, "rb"); fpos_t fpos; long fileSize = 0L; if (fp != NULL) { fseek(fp, 0, SEEK_END); fgetpos(fp, &fpos); fclose(fp); fileSize = fpos.__pos; } return fileSize; }