磁盘空间释放后如何继续输出到文件?

磁盘空间释放后如何继续输出到文件?

我正在像这样存储程序的输出: ./programOutputtingTextToStandartOut > program.log

如果磁盘已满,即使程序仍在运行,输出也会停止写入。有没有办法设置,以便当出现可用磁盘空间时,文件写入会自动恢复 - 而无需重新启动程序?

更新

添加示例程序OutputtingTextToStandartOut。

#include <string>
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    string textLine = "Some text";
    ostream* out = &cout;
    while (true) {
        (*out) << textLine << endl << flush;
        usleep(500000);
    }
}

答案1

我建议,不要在控制台级别重定向输出,而是使用程序本身来管理日志。因此,在这种情况下,您可以在每 N 次操作时检查磁盘空间。如果磁盘空间小于最低订阅值 - 停止记录。一旦它低于下限 - 重新创建日志文件并继续记录。虽然需要一定程度的代码,但它将是控制日志的最佳方式。

相关内容