C ++:确定当我使用文件描述符从日志文件读取时,何时移动/重命名/删除日志文件

时间:2018-07-12 21:01:22

标签: c++ file file-descriptor logfile

当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的情况。

  • 此时文件描述符发生了什么?
  • 此刻是否可以检测到任何信号来处理它?<​​/ li>

0 个答案:

没有答案