C ++: определить, когда файл журнала перемещается / переименовывается / удаляется, когда я читаю из него, используя файловый дескриптор

Когда JVM создает файл журнала с включенной ротацией журналов, он создает файл с таким именем:

logfile.0.current

После того, как он достигает порогового размера файла и поворачивается к новому файлу, он перемещает файл в logfile.0 и создает новый файл: logfile.1.current

У меня есть программа, которая читает из этих файлов журнала и выполняет некоторую обработку, а затем записывает содержимое в один файл.

Код для чтения из файла выглядит примерно так:

ssize_t numRead = read(_fd, buffer, BUF_SIZE - 1);
// I want to know how to handle the situation if file gets deleted here

char * msg = new char[numRead + 1];
strncpy(msg, buffer, numRead);
msg[numRead] = '\0';
// write the msg to a different file.

Но я изо всех сил пытаюсь справиться с ситуацией, когда logfile.0.current переезжает в logfile.0,

  • Что происходит с дескриптором файла в этот момент?
  • Есть ли какой-нибудь сигнал, который я могу обнаружить в этот момент, чтобы справиться с этим?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]